Merge remote-tracking branch 'Upstream/develop' into develop-a4

Conflicts:
	htdocs/product/card.php
This commit is contained in:
aspangaro 2015-12-19 05:43:22 +01:00
commit 51640c19bb
1899 changed files with 26849 additions and 13447 deletions

View File

@ -109,6 +109,12 @@ install:
echo
before_script:
- |
echo Start travis
echo Current dir is `pwd`
echo Home dir is `echo ~`
echo TRAVIS_BUILD_DIR is $TRAVIS_BUILD_DIR
- |
echo "Re-enabling Xdebug for PHP CodeSniffer and PHP Unit"
phpenv config-add /tmp/xdebug.ini
@ -149,7 +155,7 @@ before_script:
mysql -e "SELECT VERSION();"
echo
fi
- |
echo "Setting up database"
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
@ -166,8 +172,8 @@ before_script:
echo
- |
echo "Setting up Dolibarr"
export CONF_FILE=htdocs/conf/conf.php
echo "Setting up Dolibarr $CONF_FILE"
echo '<?php ' > $CONF_FILE
echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE
echo '$'dolibarr_main_document_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $CONF_FILE
@ -184,15 +190,9 @@ before_script:
#fi
# TODO: SQLite
echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
cat $CONF_FILE
echo
- |
if [ "$DEBUG" = true ]; then
echo "Debugging informations"
cat $CONF_FILE
echo
fi
- |
echo "Create documents directory and set permissions"
# and admin/temp subdirectory needed for unit tests
@ -306,3 +306,4 @@ after_failure:
fi
after_script:

View File

@ -124,7 +124,7 @@
<!-- Tweaks to metrics -->
<rule ref="Generic.Metrics.CyclomaticComplexity">
<properties>
<property name="complexity" value="80" />
<property name="complexity" value="120" />
<property name="absoluteComplexity" value="250" />
</properties>
</rule>

View File

@ -88,7 +88,7 @@ $extrafields = new ExtraFields($db);
********************************************************************/
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook))

View File

@ -124,7 +124,7 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab
********************************************************************/
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';

View File

@ -7,13 +7,15 @@
# Usage: txpush.sh (source|xx_XX) [-r dolibarr.file] [-f]
#------------------------------------------------------
export project='dolibarr'
# Syntax
if [ "x$1" = "x" ]
then
echo "This push local files to transifex."
echo "This push local files to transifex for project $project."
echo "Note: If you push a language file (not source), file will be skipped if transifex file is newer."
echo " Using -f will overwrite translation but not memory."
echo "Usage: ./dev/translation/txpush.sh (source|xx_XX) [-r dolibarr.file] [-f] [--no-interactive]"
echo "Usage: ./dev/translation/txpush.sh (source|xx_XX|all) [-r dolibarr.file] [-f] [--no-interactive]"
exit
fi
@ -28,11 +30,24 @@ then
echo "tx push -s $2 $3"
tx push -s $2 $3
else
for file in `find htdocs/langs/$1/*.lang -type f`
do
echo $file
export basefile=`basename $file | sed -s s/\.lang//g`
echo "tx push --skip -r dolibarr.$basefile -t -l $1 $2 $3 $4"
tx push --skip -r dolibarr.$basefile -t -l $1 $2 $3 $4
done
if [ "x$1" = "xall" ]
then
for dir in `find htdocs/langs/* -type d`
do
shortdir=`basename $dir`
file=$3
echo $file
export basefile=`basename $file | sed -s s/\.lang//g`
echo "tx push --skip -t -l $shortdir $2 $3 $4"
tx push --skip -t -l $shortdir $2 $3 $4
done
else
for file in `find htdocs/langs/$1/*.lang -type f`
do
echo $file
export basefile=`basename $file | sed -s s/\.lang//g`
echo "tx push --skip -r $project.$basefile -t -l $1 $2 $3 $4"
tx push --skip -r $project.$basefile -t -l $1 $2 $3 $4
done
fi
fi

View File

@ -148,14 +148,14 @@ if ($action == 'create')
dol_fiche_head();
print '<table class="border" width="100%">';
print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>';
print '<tr><td width="25%"><span class="fieldrequired">' . $langs->trans("AccountNumber") . '</span></td>';
print '<td><input name="account_number" size="30" value="' . $accounting->account_number . '"</td></tr>';
print '<tr><td>' . $langs->trans("Label") . '</td>';
print '<tr><td><span class="fieldrequired">' . $langs->trans("Label") . '</span></td>';
print '<td><input name="label" size="70" value="' . $accounting->label . '"</td></tr>';
print '<tr><td>' . $langs->trans("Accountparent") . '</td>';
print '<td>';
print $htmlacc->select_account($accounting->account_parent, 'account_parent');
print $htmlacc->select_account($accounting->account_parent, 'account_parent', 1);
print '</td></tr>';
print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
print '<td>';
@ -204,13 +204,13 @@ else if ($id)
print '<table class="border" width="100%">';
print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>';
print '<tr><td width="25%"><span class="fieldrequired">' . $langs->trans("AccountNumber") . '</span></td>';
print '<td><input name="account_number" size="30" value="' . $accounting->account_number . '"</td></tr>';
print '<tr><td>' . $langs->trans("Label") . '</td>';
print '<tr><td><span class="fieldrequired">' . $langs->trans("Label") . '</span></td>';
print '<td><input name="label" size="70" value="' . $accounting->label . '"</td></tr>';
print '<tr><td>' . $langs->trans("Accountparent") . '</td>';
print '<td>';
print $htmlacc->select_account($accounting->account_parent, 'account_parent');
print $htmlacc->select_account($accounting->account_parent, 'account_parent', 1);
print '</td></tr>';
print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
print '<td>';

View File

@ -98,7 +98,8 @@ abstract class ActionsAdherentCardCommon
}
/**
* Load data control
* doActions of a canvas is not the doActions of the hook
* @deprecated Use the doActions of hooks instead of this.
*
* @param string $action Type of action
* @param int $id Id of object

View File

@ -97,7 +97,7 @@ if ($action == 'setModuleOptions')
if (! $error)
{
setEventMessages($langs->trans("SetupSaved"), null, 'msgs');
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
}
else
{

View File

@ -2,7 +2,8 @@
/* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2011-2015 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2011-2015 Juanjo Menent <jmenent@2byte.es>ù
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -26,6 +27,7 @@
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
$langs->load("admin");
$langs->load("sendings");
@ -76,29 +78,9 @@ llxHeader("","");
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print '<br>';
$head = expedition_admin_prepare_head();
$h = 0;
$head[$h][0] = DOL_URL_ROOT."/admin/confexped.php";
$head[$h][1] = $langs->trans("Setup");
$hselected=$h;
$h++;
if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
{
$head[$h][0] = DOL_URL_ROOT."/admin/expedition.php";
$head[$h][1] = $langs->trans("Shipment");
$h++;
}
if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON))
{
$head[$h][0] = DOL_URL_ROOT."/admin/livraison.php";
$head[$h][1] = $langs->trans("Receivings");
$h++;
}
dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup"));
dol_fiche_head($head, 'general', $langs->trans("ModuleSetup"), 0, 'sending');
/*
* Formulaire parametres divers

View File

@ -478,20 +478,16 @@ if ($id == 11)
if ($id == 25)
{
// We save list of template type Dolibarr can manage. This list can found by a grep into code on "->param['models']"
$elementList = array(
'propal_send' => $langs->trans('MailToSendProposal'),
'order_send' => $langs->trans('MailToSendOrder'),
'facture_send' => $langs->trans('MailToSendInvoice'),
'shipping_send' => $langs->trans('MailToSendShipment'),
'fichinter_send' => $langs->trans('MailToSendIntervention'),
'supplier_proposal_send' => $langs->trans('MailToSendSupplierRequestForQuotation'),
'order_supplier_send' => $langs->trans('MailToSendSupplierOrder'),
'invoice_supplier_send' => $langs->trans('MailToSendSupplierInvoice'),
'thirdparty' => $langs->trans('MailToThirdparty')
);
$elementList = array();
if ($conf->propal->enabled) $elementList['propal_send']=$langs->trans('MailToSendProposal');
if ($conf->commande->enabled) $elementList['order_send']=$langs->trans('MailToSendOrder');
if ($conf->facture->enabled) $elementList['facture_send']=$langs->trans('MailToSendInvoice');
if ($conf->expedition->enabled) $elementList['shipping_send']=$langs->trans('MailToSendShipment');
if ($conf->ficheinter->enabled) $elementList['fichinter_send']=$langs->trans('MailToSendIntervention');
if ($conf->supplier_proposal->enabled) $elementList['supplier_proposal_send']=$langs->trans('MailToSendSupplierRequestForQuotation');
if ($conf->fournisseur->enabled) $elementList['order_supplier_send']=$langs->trans('MailToSendSupplierOrder');
if ($conf->fournisseur->enabled) $elementList['invoice_supplier_send']=$langs->trans('MailToSendSupplierInvoice');
if ($conf->societe->enabled) $elementList['thirdparty']=$langs->trans('MailToThirdparty');
}
// Define localtax_typeList (used for dictionary "llx_c_tva")

View File

@ -30,6 +30,7 @@
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php';
$langs->load("admin");
@ -219,30 +220,9 @@ llxHeader("","");
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print '<br>';
$head = expedition_admin_prepare_head();
//if ($mesg) print $mesg.'<br>';
$h = 0;
$head[$h][0] = DOL_URL_ROOT."/admin/confexped.php";
$head[$h][1] = $langs->trans("Setup");
$h++;
$head[$h][0] = DOL_URL_ROOT."/admin/expedition.php";
$head[$h][1] = $langs->trans("Shipment");
$hselected=$h;
$h++;
if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON))
{
$head[$h][0] = DOL_URL_ROOT."/admin/livraison.php";
$head[$h][1] = $langs->trans("Receivings");
$h++;
}
dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup"));
dol_fiche_head($head, 'shipment', $langs->trans("Sendings"), 0, 'sending');
/*
* Expedition numbering model

View File

@ -0,0 +1,126 @@
<?php
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* 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 <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/admin/expedition_extrafields.php
* \ingroup expedition
* \brief Page to setup extra fields of expedition
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
if (!$user->admin)
accessforbidden();
$langs->load("admin");
$langs->load("other");
$langs->load("sendings");
$langs->load("deliveries");
$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->trans($val);
$action=GETPOST('action', 'alpha');
$attrname=GETPOST('attrname', 'alpha');
$elementtype='expedition'; //Must be the $table_element of the class that manage extrafield
if (!$user->admin) accessforbidden();
/*
* Actions
*/
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
/*
* View
*/
$textobject=$langs->transnoentitiesnoconv("Sendings");
llxHeader('',$langs->trans("SendingsSetup"));
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print "<br>\n";
$head = expedition_admin_prepare_head();
dol_fiche_head($head, 'attributes_shipment', $langs->trans("Sendings"), 0, 'sending');
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\">".$langs->trans("NewAttribute")."</a>";
print "</div>";
}
/* ************************************************************************** */
/* */
/* Creation d'un champ optionnel */
/* */
/* ************************************************************************** */
if ($action == 'create')
{
print "<br>";
print load_fiche_titre($langs->trans('NewAttribute'));
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
}
/* ************************************************************************** */
/* */
/* Edition d'un champ optionnel */
/* */
/* ************************************************************************** */
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';
}
llxFooter();
$db->close();

View File

@ -0,0 +1,126 @@
<?php
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
*
* 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 <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/admin/expeditiondet_extrafields.php
* \ingroup expedition
* \brief Page to setup extra fields of expedition
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
if (!$user->admin)
accessforbidden();
$langs->load("admin");
$langs->load("other");
$langs->load("sendings");
$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->trans($val);
$action=GETPOST('action', 'alpha');
$attrname=GETPOST('attrname', 'alpha');
$elementtype='expeditiondet'; //Must be the $table_element of the class that manage extrafield
if (!$user->admin) accessforbidden();
/*
* Actions
*/
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
/*
* View
*/
$textobject=$langs->transnoentitiesnoconv("Sendings");
llxHeader('',$langs->trans("SendingsSetup"));
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print "<br>\n";
$head = expedition_admin_prepare_head();
dol_fiche_head($head, 'attributeslines_shipment', $langs->trans("Sendings"), 0, 'sending');
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\">".$langs->trans("NewAttribute")."</a>";
print "</div>";
}
/* ************************************************************************** */
/* */
/* Creation d'un champ optionnel */
/* */
/* ************************************************************************** */
if ($action == 'create')
{
print "<br>";
print load_fiche_titre($langs->trans('NewAttribute'));
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
}
/* ************************************************************************** */
/* */
/* Edition d'un champ optionnel */
/* */
/* ************************************************************************** */
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';
}
llxFooter();
$db->close();

View File

@ -180,21 +180,21 @@ else
// Always show vat rates with vat 0
$s=2/7;$qty=1;$vat=0;
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0);
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0,$mysoc);
print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n";
$s=10/3;$qty=1;$vat=0;
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0);
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0,0,$mysoc);
print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n";
$s=10/3;$qty=2;$vat=0;
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0);
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc);
print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
@ -230,7 +230,7 @@ else
for ($qty=1; $qty<=2; $qty++)
{
$s=10/3;
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0);
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc);
print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
@ -245,14 +245,14 @@ else
// were calculated to show all possible cases of rounding. If we change this, examples becomes useless or show the same rounding rule.
$s=10/3;$qty=1;$vat=10;
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0);
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc);
print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n";
$s=10/3;$qty=2;$vat=10;
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0);
$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc);
print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
print " x ".$langs->trans("Quantity").": ".$qty;
print " - ".$langs->trans("VAT").": ".$vat.'%';
@ -272,8 +272,8 @@ else
$s2=2/7;
// Round by line
$tmparray1=calcul_price_total(1,$qty*price2num($s1,'MU'),0,$vat,0,0,0,'HT',0, 0);
$tmparray2=calcul_price_total(1,$qty*price2num($s2,'MU'),0,$vat,0,0,0,'HT',0, 0);
$tmparray1=calcul_price_total(1,$qty*price2num($s1,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc);
$tmparray2=calcul_price_total(1,$qty*price2num($s2,'MU'),0,$vat,0,0,0,'HT',0, 0,$mysoc);
$total_ht = $tmparray1[0] + $tmparray2[0];
$total_tva = $tmparray1[1] + $tmparray2[1];
$total_ttc = $tmparray1[2] + $tmparray2[2];
@ -296,7 +296,7 @@ else
// Global round
$subtotal_ht = (($qty*price2num($s1,'MU')) + ($qty*price2num($s2,'MU')));
$tmparray3=calcul_price_total(1,$subtotal_ht,0,$vat,0,0,0,'HT',0, 0);
$tmparray3=calcul_price_total(1,$subtotal_ht,0,$vat,0,0,0,'HT',0, 0,$mysoc);
$total_ht = $tmparray3[0];
$total_tva = $tmparray3[1];
$total_ttc = $tmparray3[2];

View File

@ -7,6 +7,7 @@
* Copyright (C) 2005-2014 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2011-2015 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* 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
@ -29,6 +30,7 @@
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
require_once DOL_DOCUMENT_ROOT.'/livraison/class/livraison.class.php';
$langs->load("admin");
@ -210,28 +212,10 @@ $form=new Form($db);
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print '<br>';
$head = expedition_admin_prepare_head();
dol_fiche_head($head, 'receivings', $langs->trans("Receivings"), 0, 'sending');
$h = 0;
$head[$h][0] = DOL_URL_ROOT."/admin/confexped.php";
$head[$h][1] = $langs->trans("Setup");
$h++;
if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
{
$head[$h][0] = DOL_URL_ROOT."/admin/expedition.php";
$head[$h][1] = $langs->trans("Shipment");
$h++;
}
$head[$h][0] = DOL_URL_ROOT."/admin/livraison.php";
$head[$h][1] = $langs->trans("Receivings");
$hselected=$h;
$h++;
dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup"));
/*
* Livraison numbering model

View File

@ -0,0 +1,126 @@
<?php
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* 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 <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/admin/livraison_extrafields.php
* \ingroup livraison
* \brief Page to setup extra fields of livraison
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
if (!$user->admin)
accessforbidden();
$langs->load("admin");
$langs->load("other");
$langs->load("sendings");
$langs->load("deliveries");
$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->trans($val);
$action=GETPOST('action', 'alpha');
$attrname=GETPOST('attrname', 'alpha');
$elementtype='livraison'; //Must be the $table_element of the class that manage extrafield
if (!$user->admin) accessforbidden();
/*
* Actions
*/
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
/*
* View
*/
$textobject=$langs->transnoentitiesnoconv("Receivings");
llxHeader('',$langs->trans("SendingsSetup"));
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print "<br>\n";
$head = expedition_admin_prepare_head();
dol_fiche_head($head, 'attributes_receivings', $langs->trans("Receivings"), 0, 'sending');
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\">".$langs->trans("NewAttribute")."</a>";
print "</div>";
}
/* ************************************************************************** */
/* */
/* Creation d'un champ optionnel */
/* */
/* ************************************************************************** */
if ($action == 'create')
{
print "<br>";
print load_fiche_titre($langs->trans('NewAttribute'));
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
}
/* ************************************************************************** */
/* */
/* Edition d'un champ optionnel */
/* */
/* ************************************************************************** */
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';
}
llxFooter();
$db->close();

View File

@ -0,0 +1,126 @@
<?php
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
*
* 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 <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/admin/livraisondet_extrafields.php
* \ingroup livraison
* \brief Page to setup extra fields of livraison
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/expedition.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
if (!$user->admin)
accessforbidden();
$langs->load("admin");
$langs->load("other");
$langs->load("sendings");
$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->trans($val);
$action=GETPOST('action', 'alpha');
$attrname=GETPOST('attrname', 'alpha');
$elementtype='livraisondet'; //Must be the $table_element of the class that manage extrafield
if (!$user->admin) accessforbidden();
/*
* Actions
*/
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
/*
* View
*/
$textobject=$langs->transnoentitiesnoconv("Receivings");
llxHeader('',$langs->trans("SendingsSetup"));
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("SendingsSetup"),$linkback,'title_setup');
print "<br>\n";
$head = expedition_admin_prepare_head();
dol_fiche_head($head, 'attributeslines_receivings', $langs->trans("Receivings"), 0, 'sending');
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\">".$langs->trans("NewAttribute")."</a>";
print "</div>";
}
/* ************************************************************************** */
/* */
/* Creation d'un champ optionnel */
/* */
/* ************************************************************************** */
if ($action == 'create')
{
print "<br>";
print load_fiche_titre($langs->trans('NewAttribute'));
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
}
/* ************************************************************************** */
/* */
/* Edition d'un champ optionnel */
/* */
/* ************************************************************************** */
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';
}
llxFooter();
$db->close();

View File

@ -89,7 +89,7 @@ class Facturation
*/
public function ajoutArticle()
{
global $conf,$db;
global $conf,$db,$mysoc;
$thirdpartyid = $_SESSION['CASHDESK_ID_THIRDPARTY'];
@ -118,7 +118,7 @@ class Facturation
}
// Define part of HT, VAT, TTC
$resultarray=calcul_price_total($this->qte,$this->prix(),$this->remisePercent(),$vat_rate,0,0,0,'HT',0,$product->type,0);
$resultarray=calcul_price_total($this->qte,$this->prix(),$this->remisePercent(),$vat_rate,0,0,0,'HT',0,$product->type,$mysoc);
// Calcul du total ht sans remise
$total_ht = $resultarray[0];

View File

@ -325,7 +325,7 @@ if (empty($reshook))
for($i = 0; $i < $num; $i ++)
{
$label = (! empty($lines[$i]->label) ? $lines[$i]->label : '');
$desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle);
$desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : '');
$product_type = (! empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0);
// Dates

View File

@ -1222,7 +1222,7 @@ class Commande extends CommonOrder
$localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc);
$txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate.
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type,'', $localtaxes_type);
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];

View File

@ -405,6 +405,8 @@ class FactureRec extends Facture
*/
function addline($desc, $pu_ht, $qty, $txtva, $fk_product=0, $remise_percent=0, $price_base_type='HT', $info_bits=0, $fk_remise_except='', $pu_ttc=0, $type=0, $rang=-1, $special_code=0, $label='', $fk_unit=null)
{
global $mysoc;
$facid=$this->id;
dol_syslog("FactureRec::addline facid=$facid,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva,fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc,type=$type,fk_unit=$fk_unit", LOG_DEBUG);
@ -437,7 +439,7 @@ class FactureRec extends Facture
// qty, pu, remise_percent et txtva
// TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker
// la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva.
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, 0, 0, $price_base_type, $info_bits, $type);
$tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, 0, 0, 0, $price_base_type, $info_bits, $type, $mysoc);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];

View File

@ -2401,18 +2401,20 @@ class Facture extends CommonInvoice
/**
* Update invoice line with percentage
*
* @param FactureLigne $line Invoice line
* @param int $percent Percentage
* @param FactureLigne $line Invoice line
* @param int $percent Percentage
* @return void
*/
function update_percent($line, $percent)
{
global $mysoc;
include_once(DOL_DOCUMENT_ROOT . '/core/lib/price.lib.php');
// Cap percentages to 100
if ($percent > 100) $percent = 100;
$line->situation_percent = $percent;
$tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->product_type, 'HT', 0, 0, '', '', $percent);
$tabprice = calcul_price_total($line->qty, $line->subprice, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->product_type, 'HT', 0, 0, $mysoc, '', $percent);
$line->total_ht = $tabprice[0];
$line->total_tva = $tabprice[1];
$line->total_ttc = $tabprice[2];

View File

@ -329,10 +329,11 @@ if (empty($reshook))
$result=$mailfile->sendfile();
if ($result)
{
$resaction.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)); // Must not contain "
$resaction.=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($from,2),$mailfile->getValidAddress($sendto,2)).'<br>'; // Must not contain "
$error=0;
// Insert logs into agenda
foreach($listofqualifiedinvoice as $invid => $object)
{
$actiontypecode='AC_FAC';
@ -357,16 +358,13 @@ if (empty($reshook))
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($db);
$result=$interface->run_triggers('BILL_SENTBYMAIL',$object,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; }
if ($result < 0) { $error++; $errors=$interface->errors; }
// Fin appel triggers
if (! $error)
if ($error)
{
$resaction.=$langs->trans("MailSent").': '.$sendto."<br>\n";
}
else
{
dol_print_error($db);
setEventMessages($db->lasterror(), $errors, 'errors');
dol_syslog("Error in trigger BILL_SENTBYMAIL ".$db->lasterror(), LOG_ERR);
}
$nbsent++;
}
@ -615,7 +613,7 @@ if ($resql)
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$formmail = new FormMail($db);
dol_fiche_head(null, '', $langs->trans("SendByMail"));
dol_fiche_head(null, '', '');
$topicmail="SendBillRef";
$modelmail="facture_send";
@ -660,7 +658,7 @@ if ($resql)
$formmail->withtocc=1;
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
$formmail->withtopic=$langs->transnoentities($topicmail, '__REF__', '__REFCLIENT__');
$formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail");
$formmail->withfile=$langs->trans("OnlyPDFattachmentSupported");
$formmail->withbody=1;
$formmail->withdeliveryreceipt=1;
$formmail->withcancel=1;

View File

@ -732,7 +732,7 @@ if ($resql)
$formmail->withtocc=1;
$formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC;
$formmail->withtopic=$langs->transnoentities($topicmail, '__REF__', '__REFCLIENT__');
$formmail->withfile=$langs->trans("EachInvoiceWillBeAttachedToEmail");
$formmail->withfile=$langs->trans("OnlyPDFattachmentSupported");
$formmail->withbody=1;
$formmail->withdeliveryreceipt=1;
$formmail->withcancel=1;

View File

@ -94,7 +94,8 @@ abstract class ActionsContactCardCommon
}
/**
* Load data control
* doActions of a canvas is not the doActions of the hook
* @deprecated Use the doActions of hooks instead of this.
*
* @param string $action Type of action
* @param int $id Id of object

View File

@ -36,7 +36,9 @@ $langs->load("companies");
$langs->load("suppliers");
// Security check
$id = GETPOST('id','int');
$contactid = GETPOST('id','int');
$ref = ''; // There is no ref for contacts
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'contact', $contactid,'');
@ -150,13 +152,20 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab
}
}
$object=new Contact($db);
if (($id > 0 || ! empty($ref)) && $action != 'add')
{
$result=$object->fetch($id,$ref);
if ($result < 0) dol_print_error($db);
}
/*
* Actions
*/
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks
$reshook=$hookmanager->executeHooks('doActions',$parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';

View File

@ -8,6 +8,7 @@
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014-2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2015 Ferran Marcet <fmarcet@2byte.es>
*
* 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
@ -989,6 +990,13 @@ class Contrat extends CommonObject
}
}
if (! $error)
{
// Delete linked object
$res = $this->deleteObjectLinked();
if ($res < 0) $error++;
}
if (! $error)
{
// Delete contratdet_log

View File

@ -264,6 +264,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
}
}
}
// Send mail
require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
$mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,$sendtobcc,$deliveryreceipt,-1,'','',$trackid);
@ -277,6 +278,8 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
if ($result)
{
$error=0;
// FIXME This must be moved into a trigger for action $trigger_name
if (! empty($conf->dolimail->enabled))
{
$mid = (GETPOST('mid','int') ? GETPOST('mid','int') : 0); // Original mail id is set ?
@ -295,7 +298,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
else setEventMessages($langs->trans("MailMovedToImapFolder_Warning",$folder), null, 'warnings');
}
}
// Initialisation of datas
$object->socid = $sendtosocid; // To link to a company
$object->sendtoid = $sendtoid; // To link to a contact/address

View File

@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
/* Copyright (C) 2010-2015 Regis Houssin <regis.houssin@capnetworks.com>
*
* 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
@ -17,15 +17,17 @@
/**
* \file htdocs/core/ajax/row.php
* \brief File to return Ajax response on Row move
* \brief File to return Ajax response on Row move.
* This ajax page is called when doing an up or down drag and drop.
*/
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Disables token renewal
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Disable token renewal
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
if (! defined('NOREQUIREHOOK')) define('NOREQUIREHOOK','1'); // Disable "main.inc.php" hooks
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/genericobject.class.php';
@ -63,7 +65,7 @@ if ((isset($_POST['roworder']) && ! empty($_POST['roworder'])) && (isset($_POST[
$row->line_ajaxorder($newrowordertab);
// Reorder line to have position of chilren lines sharing same counter than parent lines
// This should be useless because there is no need to have children sharing same counter that parent.
// This should be useless because there is no need to have children sharing same counter than parent, but well, it's cleaner into database.
if (in_array($fk_element,array('fk_facture','fk_propal','fk_commande')))
{
$result=$row->line_order(true);

View File

@ -179,13 +179,14 @@ class Canvas
}
/**
* Shared method for canvas to execute actions
* Shared method for canvas to execute actions.
* @deprecated Use the doActions of hooks instead of this.
* This function is called if you add a doActions class inside your canvas. Try to not
* do that and add action code into a hook instead.
*
* @param string $action Action string
* @param int $id Object id
* @return mixed Return return code of doActions of canvas
* @deprecated This function is called if you add a doActions class inside your canvas. Try to not
* do that and add action code into a hook instead.
* @see http://wiki.dolibarr.org/index.php/Canvas_development
*/
function doActions(&$action='view', $id=0)

View File

@ -4243,7 +4243,7 @@ class Form
else
{
// Day
$retstring.='<select'.($disabled?' disabled':'').' class="flat" name="'.$prefix.'day">';
$retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'day" name="'.$prefix.'day">';
if ($emptydate || $set_time == -1)
{
@ -4257,7 +4257,7 @@ class Form
$retstring.="</select>";
$retstring.='<select'.($disabled?' disabled':'').' class="flat" name="'.$prefix.'month">';
$retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'month" name="'.$prefix.'month">';
if ($emptydate || $set_time == -1)
{
$retstring.='<option value="0" selected>&nbsp;</option>';
@ -4275,11 +4275,11 @@ class Form
// Year
if ($emptydate || $set_time == -1)
{
$retstring.='<input'.($disabled?' disabled':'').' placeholder="'.dol_escape_htmltag($langs->trans("Year")).'" class="flat" type="text" size="3" maxlength="4" name="'.$prefix.'year" value="'.$syear.'">';
$retstring.='<input'.($disabled?' disabled':'').' placeholder="'.dol_escape_htmltag($langs->trans("Year")).'" class="flat" type="text" size="3" maxlength="4" id="'.$prefix.'year" name="'.$prefix.'year" value="'.$syear.'">';
}
else
{
$retstring.='<select'.($disabled?' disabled':'').' class="flat" name="'.$prefix.'year">';
$retstring.='<select'.($disabled?' disabled':'').' class="flat" id="'.$prefix.'year" name="'.$prefix.'year">';
for ($year = $syear - 5; $year < $syear + 10 ; $year++)
{

View File

@ -316,10 +316,25 @@ class FormMail extends Form
$out.= $langs->trans('SelectMailModel').': '.$this->selectarray('modelmailselected', $modelmail_array, 0, 1);
if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
$out.= ' &nbsp; ';
$out.= '<input class="button" type="submit" value="'.$langs->trans('Valid').'" name="modelselected" id="modelselected">';
$out.= '<input class="button" type="submit" value="'.$langs->trans('Use').'" name="modelselected" id="modelselected">';
$out.= ' &nbsp; ';
$out.= '</div>';
}
elseif (! empty($this->param['models']) && in_array($this->param['models'], array(
'propal_send','order_send','facture_send',
'shipping_send','fichinter_send','supplier_proposal_send','order_supplier_send',
'invoice_supplier_send','thirdparty'
)))
{
$out.= '<div style="padding: 3px 0 3px 0">'."\n";
$out.= $langs->trans('SelectMailModel').': <select name="modelmailselected" disabled="disabled"><option value="none" disabled="disabled">'.$langs->trans("NoTemplateDefined").'</option></select>';
if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
$out.= ' &nbsp; ';
$out.= '<input class="button" type="submit" value="'.$langs->trans('Use').'" name="modelselected" disabled="disabled" id="modelselected">';
$out.= ' &nbsp; ';
$out.= '</div>';
}
$out.= '<table class="border" width="100%">'."\n";

View File

@ -237,9 +237,9 @@ abstract class DoliDB implements Database
$return.=preg_replace('/[^0-9a-z_\.]/i','',$val);
// Only ASC and DESC values are valid SQL
if ($sortorder === 'ASC') {
if (strtoupper($sortorder) === 'ASC') {
$return .= ' ASC';
} elseif ($sortorder === 'DESC') {
} elseif (strtoupper($sortorder) === 'DESC') {
$return .= ' DESC';
}
}

View File

@ -0,0 +1,50 @@
<?php
if (empty($keyforselect) || empty($keyforelement) || empty($keyforaliasextra))
{
//print $keyforselet.' - '.$keyforelement.' - '.$keyforaliasextra;
dol_print_error('', 'include of file extrafieldsinexport.inc.php was done but var $keyforselect or $keyforelement or $keyforaliasextra was not set');
exit;
}
// Add extra fields
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = '".$keyforselect."' AND entity IN (0, ".$conf->entity.')';
//print $sql;
$resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example)
{
while ($obj=$this->db->fetch_object($resql))
{
$fieldname=$keyforaliasextra.'.'.$obj->name;
$fieldlabel=ucfirst($obj->label);
$typeFilter="Text";
switch($obj->type)
{
case 'int':
case 'double':
case 'price':
$typeFilter="Numeric";
break;
case 'date':
case 'datetime':
$typeFilter="Date";
break;
case 'boolean':
$typeFilter="Boolean";
break;
case 'sellist':
$tmp='';
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
if ($tmpparam['options'] && is_array($tmpparam['options'])) {
$tmpkeys=array_keys($tmpparam['options']);
$tmp=array_shift($tmpkeys);
}
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
break;
}
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
$this->export_entities_array[$r][$fieldname]=$keyforelement;
}
}
// End add axtra fields

View File

@ -0,0 +1,142 @@
<?php
/* Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* 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 <http://www.gnu.org/licenses/>.
* or see http://www.gnu.org/
*/
/**
* \file htdocs/core/lib/expedition.lib.php
* \brief Function for expedition module
* \ingroup expedition
*/
/**
* Prepare array with list of tabs
*
* @param Expedition $object Object related to tabs
* @return array Array of tabs to show
*/
function expedition_prepare_head(Expedition $object)
{
global $langs, $conf, $user;
if (! empty($conf->expedition->enabled)) $langs->load("sendings");
$langs->load("orders");
$h = 0;
$head = array();
$h = 0;
$head[$h][0] = DOL_URL_ROOT."/admin/confexped.php";
$head[$h][1] = $langs->trans("Setup");
$h++;
$head[$h][0] = DOL_URL_ROOT."/admin/expedition.php";
$head[$h][1] = $langs->trans("Shipment");
$hselected=$h;
$h++;
if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON))
{
$head[$h][0] = DOL_URL_ROOT."/admin/livraison.php";
$head[$h][1] = $langs->trans("Receivings");
$h++;
}
complete_head_from_modules($conf,$langs,$object,$head,$h,'order','remove');
return $head;
}
/**
* Return array head with list of tabs to view object informations.
*
* @return array head array with tabs
*/
function expedition_admin_prepare_head()
{
global $langs, $conf, $user;
$langs->load("sendings");
$h = 0;
$head = array();
$head[$h][0] = DOL_URL_ROOT."/admin/confexped.php";
$head[$h][1] = $langs->trans("Setup");
$head[$h][2] = 'general';
$h++;
if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
{
$head[$h][0] = DOL_URL_ROOT."/admin/expedition.php";
$head[$h][1] = $langs->trans("Shipment");
$head[$h][2] = 'shipment';
$h++;
}
if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
{
$head[$h][0] = DOL_URL_ROOT.'/admin/expedition_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFields");
$head[$h][2] = 'attributes_shipment';
$h++;
}
if (! empty($conf->global->MAIN_SUBMODULE_EXPEDITION))
{
$head[$h][0] = DOL_URL_ROOT.'/admin/expeditiondet_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFieldsLines");
$head[$h][2] = 'attributeslines_shipment';
$h++;
}
if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON))
{
$head[$h][0] = DOL_URL_ROOT."/admin/livraison.php";
$head[$h][1] = $langs->trans("Receivings");
$head[$h][2] = 'receivings';
$h++;
}
if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON))
{
$head[$h][0] = DOL_URL_ROOT.'/admin/livraison_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFields");
$head[$h][2] = 'attributes_receivings';
$h++;
}
if (! empty($conf->global->MAIN_SUBMODULE_LIVRAISON))
{
$head[$h][0] = DOL_URL_ROOT.'/admin/livraisondet_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFieldsLines");
$head[$h][2] = 'attributeslines_receivings';
$h++;
}
complete_head_from_modules($conf,$langs,null,$head,$h,'expedition_admin','remove');
return $head;
}

View File

@ -32,7 +32,7 @@
*
* Parent class for module descriptor class files
*/
class DolibarrModules // Can not be abstract, because we need to instantiant it into unActivateModule to be able to disable a module whose files were removed.
class DolibarrModules // Can not be abstract, because we need to instantiate it into unActivateModule to be able to disable a module whose files were removed.
{
/**
* @var DoliDb Database handler
@ -432,7 +432,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
}
else
{
// If module description translation using it's unique id does not exists, we take use its name to find translation
// If module description translation does not exist using its unique id, we can use its name to find translation
if (is_array($this->langfiles))
{
foreach($this->langfiles as $val)
@ -510,12 +510,12 @@ class DolibarrModules // Can not be abstract, because we need to insta
$langstring="ExportDataset_".$this->export_code[$r];
if ($langs->trans($langstring) == $langstring)
{
// Traduction non trouvee
// Translation not found
return $langs->trans($this->export_label[$r]);
}
else
{
// Traduction trouvee
// Translation found
return $langs->trans($langstring);
}
}
@ -536,12 +536,12 @@ class DolibarrModules // Can not be abstract, because we need to insta
//print "x".$langstring;
if ($langs->trans($langstring) == $langstring)
{
// Traduction non trouvee
// Translation not found
return $langs->trans($this->import_label[$r]);
}
else
{
// Traduction trouvee
// Translation found
return $langs->trans($langstring);
}
}
@ -1223,7 +1223,7 @@ print $sql;
$obj=$this->db->fetch_object($resql);
if ($obj !== null && ! empty($obj->value) && ! empty($this->rights))
{
// Si module actif
// If the module is active
foreach ($this->rights as $key => $value)
{
$r_id = $this->rights[$key][0];

View File

@ -484,7 +484,7 @@ class pdf_einstein extends ModelePDFCommandes
$this->tva[$vatrate] += $tvaligne;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -279,7 +279,7 @@ class pdf_merou extends ModelePdfExpedition
$pdf->MultiCell(30, 3, $object->lines[$i]->qty_shipped, 0, 'C', 0);
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -452,7 +452,7 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->MultiCell(($this->page_largeur - $this->marge_droite - $this->posxqtytoship), 3, $object->lines[$i]->qty_shipped,'','C');
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -579,7 +579,7 @@ class pdf_crabe extends ModelePDFFactures
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -183,52 +183,23 @@ class modCommande extends DolibarrModules
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text');
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product');
$this->export_dependencies_array[$r]=array('order_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
// Add extra fields
$sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande' AND entity IN (0, ".$conf->entity.')';
$resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example)
{
while ($obj=$this->db->fetch_object($resql))
{
$fieldname='extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label);
$typeFilter="Text";
switch($obj->type)
{
case 'int':
case 'double':
case 'price':
$typeFilter="Numeric";
break;
case 'date':
case 'datetime':
$typeFilter="Date";
break;
case 'boolean':
$typeFilter="Boolean";
break;
case 'sellist':
$tmp='';
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options']));
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
break;
}
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
$this->export_entities_array[$r][$fieldname]='order';
}
}
// End add extra fields
$keyforselect='commande'; $keyforelement='order'; $keyforaliasextra='extra';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect='commandedet'; $keyforelement='order_line'; $keyforaliasextra='extra2';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande as c';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_extrafields as extra ON c.rowid = extra.fk_object';
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'commandedet as cd';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet_extrafields as extra2 on cd.rowid = extra2.fk_object';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on cd.fk_product = p.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object';
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_commande';
$this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('commande',1).')';
}

View File

@ -128,7 +128,7 @@ class modCron extends DolibarrModules
$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=home,fk_leftmenu=modulesadmintools', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
'type'=>'left', // This is a Left menu entry
'titre'=>'CronList',
'url'=>'/cron/list.php?status=-1',
'url'=>'/cron/list.php?status=-2',
'langs'=>'cron', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
'position'=>200,
'enabled'=>'$leftmenu==\'modulesadmintools\'', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.

View File

@ -185,46 +185,12 @@ class modFacture extends DolibarrModules
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'fd.description'=>"Text",'fd.subprice'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.special_code'=>'Numeric','fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text','p.accountancy_code_sell'=>'Text');
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.label'=>"invoice_line",'fd.description'=>"invoice_line",'fd.subprice'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.special_code'=>'invoice_line','fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_sell'=>'product','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user');
$this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
// Add extra fields
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'";
$resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example)
{
while ($obj=$this->db->fetch_object($resql))
{
$fieldname='extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label);
$typeFilter="Text";
switch($obj->type)
{
case 'int':
case 'double':
case 'price':
$typeFilter="Numeric";
break;
case 'date':
case 'datetime':
$typeFilter="Date";
break;
case 'boolean':
$typeFilter="Boolean";
break;
case 'sellist':
$tmp='';
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
if ($tmpparam['options'] && is_array($tmpparam['options'])) {
$tmpkeys=array_keys($tmpparam['options']);
$tmp=array_shift($tmpkeys);
}
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
break;
}
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
$this->export_entities_array[$r][$fieldname]='facture';
}
}
// End add axtra fields
$keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect='facturedet'; $keyforelement='invoice_line'; $keyforaliasextra='extra2';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,';
@ -233,7 +199,9 @@ class modFacture extends DolibarrModules
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON f.fk_user_valid = uv.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object';
$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facturedet as fd';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet_extrafields as extra2 on fd.rowid = extra2.fk_object';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object';
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture';
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')';
$r++;
@ -247,46 +215,8 @@ class modFacture extends DolibarrModules
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','p.note'=>'Text');
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','p.ref'=>'payment','p.amount'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','p.note'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user');
$this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
// Add extra fields
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'";
$resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example)
{
while ($obj=$this->db->fetch_object($resql))
{
$fieldname='extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label);
$typeFilter="Text";
switch($obj->type)
{
case 'int':
case 'double':
case 'price':
$typeFilter="Numeric";
break;
case 'date':
case 'datetime':
$typeFilter="Date";
break;
case 'boolean':
$typeFilter="Boolean";
break;
case 'sellist':
$tmp='';
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
if ($tmpparam['options'] && is_array($tmpparam['options'])) {
$tmpkeys=array_keys($tmpparam['options']);
$tmp=array_shift($tmpkeys);
}
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
break;
}
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
$this->export_entities_array[$r][$fieldname]='facture';
}
}
// End add axtra fields
$keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,';

View File

@ -176,52 +176,23 @@ class modPropale extends DolibarrModules
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text');
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product');
$this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
// Add extra fields
$sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'propal' AND entity IN (0, ".$conf->entity.')';
$resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example)
{
while ($obj=$this->db->fetch_object($resql))
{
$fieldname='extra.'.$obj->name;
$fieldlabel=ucfirst($obj->label);
$typeFilter="Text";
switch($obj->type)
{
case 'int':
case 'double':
case 'price':
$typeFilter="Numeric";
break;
case 'date':
case 'datetime':
$typeFilter="Date";
break;
case 'boolean':
$typeFilter="Boolean";
break;
case 'sellist':
$tmp='';
$tmpparam=unserialize($obj->param); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options']));
if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
break;
}
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
$this->export_entities_array[$r][$fieldname]='propal';
}
}
// End add extra fields
$keyforselect='propal'; $keyforelement='propal'; $keyforaliasextra='extra';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect='propaldet'; $keyforelement='propal_line'; $keyforaliasextra='extra2';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra3';
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$this->export_sql_start[$r]='SELECT DISTINCT ';
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s ';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,';
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'propal as c';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propal_extrafields as extra ON c.rowid = extra.fk_object';
$this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'propaldet as cd';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet_extrafields as extra2 on cd.rowid = extra2.fk_object';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cd.fk_product = p.rowid)';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object';
$this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_propal';
$this->export_sql_end[$r] .=' AND c.entity IN ('.getEntity('propal',1).')';
}

View File

@ -572,7 +572,7 @@ class pdf_azur extends ModelePDFPropales
if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -448,7 +448,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
$this->localtax2[$localtax2rate]+=$localtax2ligne;
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -470,7 +470,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
// Add line
if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
if ($conf->global->MAIN_PDF_DASH_BETWEEN_LINES && $i < ($nblignes - 1))
{
$pdf->setPage($pageposafter);
$pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(80,80,80)));

View File

@ -59,6 +59,8 @@ if (empty($reshook) && ! empty($extrafields->attribute_label))
if (isset($user->rights->$keyforperm)) $permok=$user->rights->$keyforperm->creer||$user->rights->$keyforperm->create||$user->rights->$keyforperm->write;
if ($object->element=='order_supplier') $permok=$user->rights->fournisseur->commande->creer;
if ($object->element=='invoice_supplier') $permok=$user->rights->fournisseur->facture->creer;
if ($object->element=='shipping') $permok=$user->rights->expedition->creer;
if ($object->element=='delivery') $permok=$user->rights->expedition->livraison->creer;
if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key])
&& $permok && ($action != 'edit_extras' || GETPOST('attribute') != $key))

View File

@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php';
class InterfaceWorkflowManager extends DolibarrTriggers
{
public $picto = 'paypal@paypal';
public $picto = 'technic';
public $family = 'core';
public $description = "Triggers of this module allows to manage workflows";
public $version = self::VERSION_DOLIBARR;

View File

@ -43,6 +43,11 @@ $action=GETPOST('action','alpha');
$confirm=GETPOST('confirm','alpha');
$cancel=GETPOST('cancel');
/*
* Actions
*/
$object = new Cronjob($db);
if (!empty($id))
{
@ -53,7 +58,7 @@ if (!empty($id))
}
}
if(!empty($cancel))
if (!empty($cancel))
{
if (!empty($id))
{
@ -61,7 +66,7 @@ if(!empty($cancel))
}
else
{
Header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=1');
Header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=-2');
exit;
}
}
@ -78,7 +83,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->cron->del
}
else
{
Header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=1');
Header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=-2');
exit;
}
}
@ -312,7 +317,7 @@ if (($action=="create") || ($action=="edit"))
print "</tr>\n";
print "<tr><td>";
print $langs->trans('CronHourStart')."</td><td>";
print $langs->trans('CronDtStart')."</td><td>";
if(!empty($object->datestart))
{
$form->select_date($object->datestart,'datestart',1,1,'',"cronform");
@ -513,15 +518,22 @@ else
print "</td></tr>";
print "<tr><td>";
print $langs->trans('CronHourStart')."</td><td>";
if(!empty($object->datestart)) {print dol_print_date($object->datestart,'dayhourtext');} else {print $langs->trans('CronNone');}
print $langs->trans('CronDtStart')."</td><td>";
if(!empty($object->datestart)) {print dol_print_date($object->datestart,'dayhourtext');}
print "</td></tr>";
print "<tr><td>";
print $langs->trans('CronDtEnd')."</td><td>";
if(!empty($object->dateend)) {print dol_print_date($object->dateend,'dayhourtext');} else {print $langs->trans('CronNone');}
if(!empty($object->dateend)) {print dol_print_date($object->dateend,'dayhourtext');}
print "</td></tr>";
print '<tr><td>';
print $langs->trans('CronDtNextLaunch');
print ' ('.$langs->trans('CronFrom').')';
print "</td><td>";
if(!empty($object->datenextrun)) {print dol_print_date($object->datenextrun,'dayhoursec');} else {print $langs->trans('CronNone');}
print "</td></tr>";
print "<tr><td>";
print $langs->trans('CronPriority')."</td>";
print "<td>".$object->priority;
@ -586,23 +598,17 @@ else
print '<br>';
print '<table class="border" width="100%">';
print '<tr><td width="30%">';
print $langs->trans('CronDtLastLaunch')."</td><td>";
if(!empty($object->datelastrun)) {print dol_print_date($object->datelastrun,'dayhourtext');} else {print $langs->trans('CronNone');}
print "</td></tr>";
print '<tr><td>';
print $langs->trans('CronDtNextLaunch');
print ' ('.$langs->trans('CronFrom').')';
print "</td><td>";
if(!empty($object->datenextrun)) {print dol_print_date($object->datenextrun,'dayhourtext');} else {print $langs->trans('CronNone');}
if(!empty($object->datelastrun)) {print dol_print_date($object->datelastrun,'dayhoursec');} else {print $langs->trans('CronNone');}
print "</td></tr>";
print '<tr><td>';
print $langs->trans('CronDtLastResult')."</td><td>";
if(!empty($object->datelastresult)) {print dol_print_date($object->datelastresult,'dayhourtext');} else {print $langs->trans('CronNone');}
if(!empty($object->datelastresult)) {print dol_print_date($object->datelastresult,'dayhoursec');} else {print $langs->trans('CronNone');}
print "</td></tr>";
print '<tr><td>';

View File

@ -521,9 +521,6 @@ class Cronjob extends CommonObject
// Check parameters
// Put here code to add a control on parameters values
if (empty($this->status)) {
$this->dateend=dol_now();
}
if (dol_strlen($this->datestart)==0) {
$this->errors[]=$langs->trans('CronFieldMandatory',$langs->trans('CronDtStart'));
$error++;
@ -830,7 +827,9 @@ class Cronjob extends CommonObject
/**
* Run a job
* Run a job.
* Once job is finished, status and nb of of run is updated.
* This function does not plan the next run. This is done by function ->reprogram_jobs
*
* @param string $userlogin User login
* @return int <0 if KO, >0 if OK
@ -843,7 +842,8 @@ class Cronjob extends CommonObject
$langs->load('cron');
if (empty($userlogin)) {
if (empty($userlogin))
{
$this->error="User login is mandatory";
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
return -1;
@ -891,7 +891,7 @@ class Cronjob extends CommonObject
$this->datelastrun=$now;
$this->lastoutput='';
$this->lastresult='';
$this->nbrun=$this->nbrun+1;
$this->nbrun=$this->nbrun + 1;
$result = $this->update($user);
if ($result<0) {
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
@ -1055,23 +1055,28 @@ class Cronjob extends CommonObject
/**
* Reprogram a job
*
* @param string $userlogin User login
* @return int <0 if KO, >0 if OK
*
* @param string $userlogin User login
* @return int <0 if KO, >0 if OK
*/
function reprogram_jobs($userlogin)
{
dol_syslog(get_class($this)."::reprogram_jobs userlogin:$userlogin", LOG_DEBUG);
$now = dol_now();
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
$user=new User($this->db);
$result=$user->fetch('',$userlogin);
if ($result<0) {
if ($result<0)
{
$this->error="User Error:".$user->error;
dol_syslog(get_class($this)."::reprogram_jobs ".$this->error, LOG_ERR);
return -1;
}else {
if (empty($user->id)) {
}
else
{
if (empty($user->id))
{
$this->error=" User user login:".$userlogin." do not exists";
dol_syslog(get_class($this)."::reprogram_jobs ".$this->error, LOG_ERR);
return -1;
@ -1080,17 +1085,41 @@ class Cronjob extends CommonObject
dol_syslog(get_class($this)."::reprogram_jobs ", LOG_DEBUG);
if (empty($this->datenextrun)) {
$this->datenextrun=dol_now()+$this->frequency;
} else {
if ($this->datenextrun<dol_now()) {
$this->datenextrun=dol_now()+$this->frequency;
} else {
$this->datenextrun=$this->datenextrun+$this->frequency;
if (empty($this->datenextrun))
{
$this->datenextrun = $now + $this->frequency;
}
else
{
if ($this->datenextrun < $now && $this->frequency > 0)
{
// Loop until date is after future
while ($this->datenextrun < $now)
{
$this->datenextrun += $this->frequency;
}
}
else
{
//$this->datenextrun=$this->datenextrun+$this->frequency;
}
}
// Archive job
if ($this->autodelete == 2)
{
if (($this->maxrun > 0 && ($this->nbrun >= $this->maxrun))
|| ($this->dateend && ($this->datenextrun > $this->dateend)))
{
$this->status = 2;
dol_syslog(get_class($this)."::reprogram_jobs Job must be set to archived", LOG_ERR);
}
}
$result = $this->update($user);
if ($result<0) {
if ($result<0)
{
dol_syslog(get_class($this)."::reprogram_jobs ".$this->error, LOG_ERR);
return -1;
}

View File

@ -47,6 +47,7 @@ $sortorder=GETPOST('sortorder','alpha');
$sortfield=GETPOST('sortfield','alpha');
$page=GETPOST('page','int');
$status=GETPOST('status','int');
if ($status == '') $status=-2;
//Search criteria
$search_label=GETPOST("search_label",'alpha');
@ -116,7 +117,7 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex
}
}
header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=-1'); // Make a call to avoid to run twice job when using back
header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=-2'); // Make a call to avoid to run twice job when using back
exit;
}
@ -131,22 +132,6 @@ $pagetitle=$langs->trans("CronList");
llxHeader('',$pagetitle);
print load_fiche_titre($pagetitle,'','title_setup');
print $langs->trans('CronInfo');
if ($action == 'delete')
{
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.'&status='.$status,$langs->trans("CronDelete"),$langs->trans("CronConfirmDelete"),"confirm_delete",'','',1);
}
if ($action == 'execute')
{
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.'&status='.$status,$langs->trans("CronExecute"),$langs->trans("CronConfirmExecute"),"confirm_execute",'','',1);
}
// list of jobs created
$object = new Cronjob($db);
$result=$object->fetch_all($sortorder, $sortfield, $limit, $offset, $status, $filter);
@ -154,29 +139,50 @@ if ($result < 0)
{
setEventMessages($object->error, $object->errors, 'errors');
}
$nbtotalofrecord=0;
$num=count($object->lines);
$param='&page='.$page.'&status='.$status.'&search_label='.$search_label;
print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_setup');
print $langs->trans('CronInfo');
print "<br><br>";
if ($action == 'delete')
{
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.'&status='.$status,$langs->trans("CronDelete"),$langs->trans("CronConfirmDelete"),"confirm_delete",'','',1);
}
if ($action == 'execute')
{
print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$id.'&status='.$status,$langs->trans("CronExecute"),$langs->trans("CronConfirmExecute"),"confirm_execute",'','',1);
}
print '<form method="GET" action="'.$url_form.'" name="search_form">'."\n";
print '<input type="hidden" name="status" value="'.$status.'" >';
print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">';
$arg_url='&page='.$page.'&status='.$status.'&search_label='.$search_label;
print_liste_field_titre($langs->trans("ID"),$_SERVER["PHP_SELF"],"t.rowid","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronLabel"),$_SERVER["PHP_SELF"],"t.label","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronTask"),'','',"",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtStart"),$_SERVER["PHP_SELF"],"t.datestart","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtEnd"),$_SERVER["PHP_SELF"],"t.dateend","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtLastLaunch"),$_SERVER["PHP_SELF"],"t.datelastrun","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtNextLaunch"),$_SERVER["PHP_SELF"],"t.datenextrun","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronFrequency"),'',"","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronNbRun"),$_SERVER["PHP_SELF"],"t.nbrun","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronLastResult"),$_SERVER["PHP_SELF"],"t.lastresult","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronLastOutput"),$_SERVER["PHP_SELF"],"t.lastoutput","",$arg_url,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Enabled"),$_SERVER["PHP_SELF"],"t.status","",$arg_url,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("ID"),$_SERVER["PHP_SELF"],"t.rowid","",$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronLabel"),$_SERVER["PHP_SELF"],"t.label","",$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronTask"),'','',"",$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtStart"),$_SERVER["PHP_SELF"],"t.datestart","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtEnd"),$_SERVER["PHP_SELF"],"t.dateend","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtNextLaunch"),$_SERVER["PHP_SELF"],"t.datenextrun","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronFrequency"),'',"","",$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronMaxRun"),$_SERVER["PHP_SELF"],"t.maxrun","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronNbRun"),$_SERVER["PHP_SELF"],"t.nbrun","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronDtLastLaunch"),$_SERVER["PHP_SELF"],"t.datelastrun","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronLastResult"),$_SERVER["PHP_SELF"],"t.lastresult","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("CronLastOutput"),$_SERVER["PHP_SELF"],"t.lastoutput","",$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"t.status","",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre('');
print "</tr>\n";
@ -194,8 +200,9 @@ print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td class="liste_titre" align="center">';
print $form->selectarray('status', array('0'=>$langs->trans("No"),'1'=>$langs->trans("Yes")), $status, 1);
print $form->selectarray('status', array('0'=>$langs->trans("Disabled"), '1'=>$langs->trans("Enabled"), '-2'=>$langs->trans("EnabledAndDisabled"), '2'=>$langs->trans("Archived")), $status, 1);
print '</td><td class="liste_titre" align="right">';
print '<input class="liste_titre" type="image" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
@ -203,9 +210,9 @@ print '</td>';
print '</tr>';
if (count($object->lines) > 0)
if ($num > 0)
{
// Loop on each active job
// Loop on each job
$style='pair';
foreach($object->lines as $line)
{
@ -229,7 +236,7 @@ if (count($object->lines) > 0)
}
else
{
print $langs->trans('CronNone');
//print $langs->trans('CronNone');
}
print '</td>';
@ -252,20 +259,16 @@ if (count($object->lines) > 0)
}
print '</td>';
print '<td>';
if(!empty($line->datestart)) {print dol_print_date($line->datestart,'dayhour');} else {print $langs->trans('CronNone');}
print '<td class="center">';
if(!empty($line->datestart)) {print dol_print_date($line->datestart,'dayhour');}
print '</td>';
print '<td>';
if(!empty($line->dateend)) {print dol_print_date($line->dateend,'dayhour');} else {print $langs->trans('CronNone');}
print '<td class="center">';
if(!empty($line->dateend)) {print dol_print_date($line->dateend,'dayhour');}
print '</td>';
print '<td>';
if(!empty($line->datelastrun)) {print dol_print_date($line->datelastrun,'dayhour');} else {print $langs->trans('CronNone');}
print '</td>';
print '<td>';
if(!empty($line->datenextrun)) {print dol_print_date($line->datenextrun,'dayhour');} else {print $langs->trans('CronNone');}
print '<td class="center">';
if(!empty($line->datenextrun)) {print dol_print_date($line->datenextrun,'dayhour');}
print '</td>';
print '<td>';
@ -275,21 +278,31 @@ if (count($object->lines) > 0)
if($line->unitfrequency == "604800") print $langs->trans('CronEach')." ".($line->frequency/$line->unitfrequency)." ".$langs->trans('Weeks');
print '</td>';
print '<td>';
if(!empty($line->nbrun)) {print $line->nbrun;} else {print '0';}
print '<td align="right">';
if (!empty($line->maxrun)) {print $line->maxrun;}
print '</td>';
print '<td align="right">';
if (!empty($line->nbrun)) {print $line->nbrun;} else {print '0';}
print '</td>';
print '<td class="center">';
if(!empty($line->datelastrun)) {print dol_print_date($line->datelastrun,'dayhour');}
print '</td>';
print '<td class="center">';
if(!empty($line->lastresult)) {print dol_trunc($line->lastresult);}
print '</td>';
print '<td>';
if(!empty($line->lastresult)) {print dol_trunc($line->lastresult);} else {print $langs->trans('CronNone');}
print '</td>';
print '<td>';
if(!empty($line->lastoutput)) {print dol_trunc(nl2br($line->lastoutput),100);} else {print $langs->trans('CronNone');}
if(!empty($line->lastoutput)) {print dol_trunc(nl2br($line->lastoutput),100);}
print '</td>';
// Status
print '<td align="center">';
print yn($line->status);
if ($line->status == 1) print $langs->trans("Enabled");
elseif ($line->status == 2) print $langs->trans("Archived");
else print $langs->trans("Disabled");
print '</td>';
print '<td align="right" class="nowrap">';

View File

@ -8,6 +8,7 @@
* Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2014 Cedric GROSS <c.gross@kreiz-it.fr>
* Copyright (C) 2014 Francis Appels <francis.appels@yahoo.com>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* 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
@ -37,6 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/sendings.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/expedition/modules_expedition.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
@ -75,6 +77,15 @@ $hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty(
$hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
$object = new Expedition($db);
$extrafields = new ExtraFields($db);
$extrafieldsline = new ExtraFields($db);
// fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
// fetch optionals attributes lines and labels
$extralabelslines=$extrafieldsline->fetch_name_optionals_label($object->table_element_line);
// Load object. Make an object->fetch
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once
@ -111,6 +122,33 @@ if ($action == 'set_incoterms' && !empty($conf->incoterm->enabled))
$result = $object->setIncoterms(GETPOST('incoterm_id', 'int'), GETPOST('location_incoterms', 'alpha'));
}
if ($action == 'update_extras')
{
// Fill array 'array_options' with data from update form
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute'));
if ($ret < 0) $error++;
if (! $error)
{
// Actions on extra fields (by external module or standard code)
// TODO le hook fait double emploi avec le trigger !!
$hookmanager->initHooks(array('expeditiondao'));
$parameters = array('id' => $object->id);
$reshook = $hookmanager->executeHooks('insertExtraFields', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if (empty($reshook)) {
$result = $object->insertExtraFields();
if ($result < 0) {
$error++;
}
} else if ($reshook < 0)
$error++;
}
if ($error)
$action = 'edit_extras';
}
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
@ -119,9 +157,10 @@ if (empty($reshook))
{
include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; // Must be include, not include_once
if ($action == 'add')
if ($action == 'add' && $user->rights->expedition->creer)
{
$error=0;
$predef='';
$db->begin();
@ -157,7 +196,8 @@ if (empty($reshook))
$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
$batch_line = array();
$array_options=array();
$num=count($objectsrc->lines);
$totalqty=0;
@ -201,8 +241,20 @@ if (empty($reshook))
//shipment line for product with no batch management
if (GETPOST($qty,'int') > 0) $totalqty+=GETPOST($qty,'int');
}
// Extrafields
$extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line);
$array_options[$i] = $extrafieldsline->getOptionalsFromPost($extralabelsline, $i);
// Unset extrafield
if (is_array($extralabelsline)) {
// Get extra fields
foreach ($extralabelsline as $key => $value) {
unset($_POST["options_" . $key]);
}
}
}
//var_dump($batch_line[2]);
if ($totalqty > 0) // There is at least one thing to ship
@ -220,8 +272,8 @@ if (empty($reshook))
$idl = "idl".$i;
$entrepot_id = is_numeric(GETPOST($ent,'int'))?GETPOST($ent,'int'):GETPOST('entrepot_id','int');
if ($entrepot_id < 0) $entrepot_id='';
$ret=$object->addline($entrepot_id,GETPOST($idl,'int'),GETPOST($qty,'int'));
$ret=$object->addline($entrepot_id,GETPOST($idl,'int'),GETPOST($qty,'int'),$array_options[$i]);
if ($ret < 0)
{
setEventMessages($object->error, $object->errors, 'errors');
@ -234,7 +286,7 @@ if (empty($reshook))
// batch mode
if ($batch_line[$i]['qty']>0)
{
$ret=$object->addline_batch($batch_line[$i]);
$ret=$object->addline_batch($batch_line[$i],$array_options[$i]);
if ($ret < 0)
{
setEventMessages($object->error, $object->errors, 'errors');
@ -242,8 +294,11 @@ if (empty($reshook))
}
}
}
}
}
// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
if ($ret < 0) $error++;
if (! $error)
{
$ret=$object->create($user); // This create shipment (like Odoo picking) and line of shipments. Stock movement will when validating shipment.
@ -603,6 +658,15 @@ if ($action == 'create')
print '<td colspan="3">';
print '<input name="tracking_number" size="20" value="'.GETPOST('tracking_number','alpha').'">';
print "</td></tr>\n";
// Other attributes
$parameters = array('objectsrc' => $objectsrc, 'colspan' => ' colspan="3"', 'socid'=>$socid);
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$expe,$action); // Note that $action and $object may have been modified by hook
if (empty($reshook) && ! empty($extrafields->attribute_label)) {
print $expe->showOptionals($extrafields, 'edit');
}
// Incoterms
if (!empty($conf->incoterm->enabled))
@ -621,17 +685,13 @@ if ($action == 'create')
$liste = ModelePdfExpedition::liste_modeles($db);
print $form->selectarray('model', $liste, $conf->global->EXPEDITION_ADDON_PDF);
print "</td></tr>\n";
// Other attributes
$parameters=array('colspan' => ' colspan="3"');
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$expe,$action); // Note that $action and $object may have been modified by hook
print "</table>";
dol_fiche_end();
/*
* Lignes de commandes
* Expedition Lines
*/
$numAsked = count($object->lines);
@ -895,6 +955,17 @@ if ($action == 'create')
print img_warning().' '.$langs->trans("NoProductToShipFoundIntoStock", $staticwarehouse->libelle);
}
}
//Display lines extrafields
if (is_array($extralabelslines) && count($extralabelslines)>0) {
$colspan=5;
$line = new ExpeditionLigne($db);
$line->fetch_optionals($object->id,$extralabelslines);
print '<tr '.$bc[$var].'>';
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked);
print '</tr>';
}
$indiceAsked++;
}
@ -934,6 +1005,8 @@ else if ($id || $ref)
$soc = new Societe($db);
$soc->fetch($object->socid);
$res = $object->fetch_optionals($object->id, $extralabels);
$head=shipping_prepare_head($object);
dol_fiche_head($head, 'shipping', $langs->trans("Shipment"), 0, 'sending');
@ -1252,9 +1325,9 @@ else if ($id || $ref)
}
// Other attributes
$parameters=array('colspan' => ' colspan="3"');
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
$cols = 3;
include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php';
print "</table>\n";
/*
@ -1437,6 +1510,16 @@ else if ($id || $ref)
}
}
print "</tr>";
//Display lines extrafields
if (is_array($extralabelslines) && count($extralabelslines)>0) {
$colspan= empty($conf->productbatch->enabled) ? 5 : 6;
$line = new ExpeditionLigne($db);
$line->fetch_optionals($lines[$i]->id,$extralabelslines);
print '<tr '.$bc[$var].'>';
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bc[$var], 'colspan'=>$colspan),$indiceAsked);
print '</tr>';
}
$var=!$var;
}

View File

@ -8,6 +8,7 @@
* Copyright (C) 2014 Cedric GROSS <c.gross@kreiz-it.fr>
* Copyright (C) 2014-2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2014-2015 Francis Appels <francis.appels@yahoo.com>
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
*
* 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
@ -30,6 +31,7 @@
*/
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
require_once DOL_DOCUMENT_ROOT."/core/class/commonobjectline.class.php";
if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
if (! empty($conf->productbatch->enabled)) require_once DOL_DOCUMENT_ROOT.'/expedition/class/expeditionbatch.class.php';
@ -43,6 +45,7 @@ class Expedition extends CommonObject
public $element="shipping";
public $fk_element="fk_expedition";
public $table_element="expedition";
public $table_element_line="expeditiondet";
protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
var $socid;
@ -167,11 +170,12 @@ class Expedition extends CommonObject
* Create expedition en base
*
* @param User $user Objet du user qui cree
* @param int $notrigger 1=Does not execute triggers, 0= execuete triggers
* @return int <0 si erreur, id expedition creee si ok
*/
function create($user)
function create($user, $notrigger=0)
{
global $conf, $langs;
global $conf, $langs, $hookmanager;
$now=dol_now();
@ -255,14 +259,14 @@ class Expedition extends CommonObject
{
if (! isset($this->lines[$i]->detail_batch))
{ // no batch management
if (! $this->create_line($this->lines[$i]->entrepot_id, $this->lines[$i]->origin_line_id, $this->lines[$i]->qty) > 0)
if (! $this->create_line($this->lines[$i]->entrepot_id, $this->lines[$i]->origin_line_id, $this->lines[$i]->qty, $this->lines[$i]->array_options) > 0)
{
$error++;
}
}
else
{ // with batch management
if (! $this->create_line_batch($this->lines[$i]) > 0)
if (! $this->create_line_batch($this->lines[$i],$this->lines[$i]->array_options) > 0)
{
$error++;
}
@ -284,8 +288,26 @@ class Expedition extends CommonObject
$error++;
}
}
// Actions on extra fields (by external module or standard code)
// TODO le hook fait double emploi avec le trigger !!
$hookmanager->initHooks(array('expeditiondao'));
$parameters=array('socid'=>$this->id);
$reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
if (empty($reshook))
{
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
{
$result=$this->insertExtraFields();
if ($result < 0)
{
$error++;
}
}
}
else if ($reshook < 0) $error++;
if (! $error)
if (! $error && ! $notrigger)
{
// Call trigger
$result=$this->call_trigger('SHIPPING_CREATE',$user);
@ -340,10 +362,12 @@ class Expedition extends CommonObject
* @param int $entrepot_id Id of warehouse
* @param int $origin_line_id Id of source line
* @param int $qty Quantity
* @param array $array_options extrafields array
* @return int <0 if KO, >0 if OK
*/
function create_line($entrepot_id, $origin_line_id, $qty)
function create_line($entrepot_id, $origin_line_id, $qty,$array_options=0)
{
global $conf;
$error = 0;
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expeditiondet (";
@ -363,6 +387,19 @@ class Expedition extends CommonObject
{
$error++;
}
if (!$error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options)>0) // For avoid conflicts if trigger used
{
$expeditionline = new ExpeditionLigne($this->db);
$expeditionline->array_options=$array_options;
$expeditionline->id= $this->db->last_insert_id(MAIN_DB_PREFIX.$expeditionline->table_element);
$result=$expeditionline->insertExtraFields();
if ($result < 0)
{
$this->error[]=$expeditionline->error;
$error++;
}
}
if (! $error) return 1;
else return -1;
@ -373,13 +410,14 @@ class Expedition extends CommonObject
* Create the detail (eat-by date) of the expedition line
*
* @param object $line_ext full line informations
* @param array $array_options extrafields array
* @return int <0 if KO, >0 if OK
*/
function create_line_batch($line_ext)
function create_line_batch($line_ext,$array_options=0)
{
$error = 0;
if ($this->create_line(($line_ext->entrepot_id?$line_ext->entrepot_id:'null'),$line_ext->origin_line_id,$line_ext->qty) < 0)
if ($this->create_line(($line_ext->entrepot_id?$line_ext->entrepot_id:'null'),$line_ext->origin_line_id,$line_ext->qty,$array_options) < 0)
{
$error++;
}
@ -500,6 +538,13 @@ class Expedition extends CommonObject
* Thirparty
*/
$result=$this->fetch_thirdparty();
// Retrieve all extrafields for expedition
// fetch optionals attributes and labels
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
$extrafields=new ExtraFields($this->db);
$extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true);
$this->fetch_optionals($this->id,$extralabels);
/*
* Lines
@ -784,9 +829,10 @@ class Expedition extends CommonObject
* @param int $entrepot_id Id of warehouse
* @param int $id Id of source line (order line)
* @param int $qty Quantity
* @param array $array_options extrafields array
* @return int <0 if KO, >0 if OK
*/
function addline($entrepot_id, $id, $qty)
function addline($entrepot_id, $id, $qty,$array_options=0)
{
global $conf, $langs;
@ -824,7 +870,11 @@ class Expedition extends CommonObject
}
}
}
// extrafields
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options)>0) // For avoid conflicts if trigger used
$line->array_options = $array_options;
$this->lines[$num] = $line;
}
@ -832,10 +882,13 @@ class Expedition extends CommonObject
* Add a shipment line with batch record
*
* @param array $dbatch Array of value (key 'detail' -> Array, key 'qty' total quantity for line, key ix_l : original line index)
* @param array $array_options extrafields array
* @return int <0 if KO, >0 if OK
*/
function addline_batch($dbatch)
function addline_batch($dbatch,$array_options=0)
{
global $conf;
$num = count($this->lines);
if ($dbatch['qty']>0)
{
@ -872,6 +925,10 @@ class Expedition extends CommonObject
$line->qty = $dbatch['qty'];
$line->detail_batch=$tab;
// extrafields
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options)>0) // For avoid conflicts if trigger used
$line->array_options = $array_options;
//var_dump($line);
$this->lines[$num] = $line;
}
@ -1181,7 +1238,7 @@ class Expedition extends CommonObject
*/
function fetch_lines()
{
global $conf;
global $conf, $mysoc;
// TODO: recuperer les champs du document associe a part
$sql = "SELECT cd.rowid, cd.fk_product, cd.label as custom_label, cd.description, cd.qty as qty_asked";
@ -1257,7 +1314,7 @@ class Expedition extends CommonObject
$line->volume_units = $obj->volume_units;
// For invoicing
$tabprice = calcul_price_total($obj->qty_shipped, $obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->fk_product_type); // We force type to 0
$tabprice = calcul_price_total($obj->qty_shipped, $obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->fk_product_type, $mysoc); // We force type to 0
$line->desc = $obj->description; // We need ->desc because some code into CommonObject use desc (property defined for other elements)
$line->qty = $line->qty_shipped;
$line->total_ht = $tabprice[0];
@ -1766,7 +1823,7 @@ class Expedition extends CommonObject
/**
* Classe de gestion des lignes de bons d'expedition
*/
class ExpeditionLigne
class ExpeditionLigne extends CommonObjectLine
{
var $db;
@ -1791,6 +1848,9 @@ class ExpeditionLigne
var $total_localtax1; // Total Local tax 1
var $total_localtax2; // Total Local tax 2
public $element='expeditiondet';
public $table_element='expeditiondet';
public $fk_origin_line;
// Deprecated

View File

@ -886,7 +886,8 @@ if ($action == "addline")
$object_ligne->fk_expensereport = $_POST['fk_expensereport'];
$type = 0; // TODO What if service ?
$tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type);
$seller = ''; // seller is unknown
$tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type, $seller);
$object_ligne->vatrate = price2num($vatrate);
$object_ligne->total_ttc = $tmp[2];

View File

@ -167,9 +167,9 @@ $tmp='';
$found=0;
$real_dolibarr_main_document_root=str_replace('\\','/',realpath($dolibarr_main_document_root)); // A) Value found into config file, to say where are store htdocs files. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs
if (!empty($_SERVER["DOCUMENT_ROOT"])) {
$pathroot = $_SERVER["DOCUMENT_ROOT"]; // B) Value reported by web server setup, to say where is root of web server instance. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs
$pathroot = $_SERVER["DOCUMENT_ROOT"]; // B) Value reported by web server setup (not defined on CLI mode), to say where is root of web server instance. Ex: C:/xxx/dolibarr, C:/xxx/dolibarr/htdocs
} else {
$pathroot = 'BOGUS';
$pathroot = 'NOTDEFINED';
}
$paths=explode('/',str_replace('\\','/',$_SERVER["SCRIPT_NAME"])); // C) Value reported by web server, to say full path on filesystem of a file. Ex: /dolibarr/htdocs/admin/system/phpinfo.php
// Try to detect if $_SERVER["DOCUMENT_ROOT"]+start of $_SERVER["SCRIPT_NAME"] is $dolibarr_main_document_root. If yes, relative url to add before dol files is this start part.
@ -189,6 +189,7 @@ foreach($paths as $tmppath) // We check to find (B+start of C)=A
}
//else print "Not found yet for concatpath=".$concatpath."<br>\n";
}
//print "found=".$found." dolibarr_main_url_root=".$dolibarr_main_url_root."\n";
if (! $found) $tmp=$dolibarr_main_url_root; // If autodetect fails (Ie: when using apache alias that point outside default DOCUMENT_ROOT).
else $tmp='http'.(((empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != 'on') && (empty($_SERVER["SERVER_PORT"])||$_SERVER["SERVER_PORT"]!=443))?'':'s').'://'.$_SERVER["SERVER_NAME"].((empty($_SERVER["SERVER_PORT"])||$_SERVER["SERVER_PORT"]==80||$_SERVER["SERVER_PORT"]==443)?'':':'.$_SERVER["SERVER_PORT"]).($tmp3?(preg_match('/^\//',$tmp3)?'':'/').$tmp3:'');
//print "tmp1=".$tmp1." tmp2=".$tmp2." tmp3=".$tmp3." tmp=".$tmp."\n";

View File

@ -732,7 +732,8 @@ class CommandeFournisseur extends CommonOrder
// Do we have to change status now ? (If double approval is required and first approval, we keep status to 1 = validated)
$movetoapprovestatus=true;
$comment='';
$sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " SET ref='".$this->db->escape($num)."',";
if (empty($secondlevel)) // standard or first level approval
@ -741,7 +742,11 @@ class CommandeFournisseur extends CommonOrder
$sql.= " fk_user_approve = ".$user->id;
if (! empty($conf->global->SUPPLIER_ORDER_DOUBLE_APPROVAL) && $conf->global->MAIN_FEATURES_LEVEL > 0 && $this->total_ht >= $conf->global->SUPPLIER_ORDER_DOUBLE_APPROVAL)
{
if (empty($this->user_approve_id2)) $movetoapprovestatus=false; // second level approval not done
if (empty($this->user_approve_id2))
{
$movetoapprovestatus=false; // second level approval not done
$comment=' (first level)';
}
}
}
else // request a second level approval
@ -749,6 +754,7 @@ class CommandeFournisseur extends CommonOrder
$sql.= " date_approve2='".$this->db->idate($now)."',";
$sql.= " fk_user_approve2 = ".$user->id;
if (empty($this->user_approve_id)) $movetoapprovestatus=false; // first level approval not done
$comment=' (second level)';
}
// If double approval is required and first approval, we keep status to 1 = validated
if ($movetoapprovestatus) $sql.= ", fk_statut = 2";
@ -758,7 +764,7 @@ class CommandeFournisseur extends CommonOrder
if ($this->db->query($sql))
{
$this->log($user, 2, time()); // Statut 2
$this->log($user, 2, time(), $comment); // Statut 2
if (! empty($conf->global->SUPPLIER_ORDER_AUTOADD_USER_CONTACT))
{

View File

@ -2733,10 +2733,24 @@ elseif (! empty($object->id))
// Reopen
if (in_array($object->statut, array(2)))
{
if ($user->rights->fournisseur->commande->commander)
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=reopen">'.$langs->trans("Disapprove").'</a>';
}
$buttonshown=0;
if (! $buttonshown && $user->rights->fournisseur->commande->approuver)
{
if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY)
|| (! empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY) && $user->id == $object->user_approve_id))
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=reopen">'.$langs->trans("Disapprove").'</a>';
$buttonshown++;
}
}
if (! $buttonshown && $user->rights->fournisseur->commande->approve2 && ! empty($conf->global->SUPPLIER_ORDER_DOUBLE_APPROVAL))
{
if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY)
|| (! empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY) && $user->id == $object->user_approve_id2))
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=reopen">'.$langs->trans("Disapprove").'</a>';
}
}
}
if (in_array($object->statut, array(3, 5, 6, 7, 9)) || ($object->statut == 4 && $object->billed))
{

View File

@ -195,8 +195,8 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (18
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1812, 181, '0','0','VAT Rate 0',1);
-- POLAND (id country=184)
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1841, 184, '20','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1842, 184, '7','0','VAT reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1841, 184, '23','0','VAT standard rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1842, 184, '8','0','VAT reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1843, 184, '3','0','VAT reduced rate',1);
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (1844, 184, '0','0','VAT Rate 0', 1);

View File

@ -340,6 +340,54 @@ create table llx_categorie_project
import_key varchar(14)
)ENGINE=innodb;
-- Extrafields Expedition (shipment)
create table llx_expedition_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL,
import_key varchar(14) -- import key
) ENGINE=innodb;
ALTER TABLE llx_expedition_extrafields ADD INDEX idx_expedition_extrafields (fk_object);
create table llx_expeditiondet_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL, -- object id
import_key varchar(14) -- import key
)ENGINE=innodb;
ALTER TABLE llx_expeditiondet_extrafields ADD INDEX idx_expeditiondet_extrafields (fk_object);
-- Extrafields Expedition (delivery receipts)
create table llx_livraison_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL,
import_key varchar(14) -- import key
) ENGINE=innodb;
ALTER TABLE llx_livraison_extrafields ADD INDEX idx_livraison_extrafields (fk_object);
create table llx_livraisondet_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL, -- object id
import_key varchar(14) -- import key
)ENGINE=innodb;
ALTER TABLE llx_livraisondet_extrafields ADD INDEX idx_livraisondet_extrafields (fk_object);
ALTER TABLE llx_categorie_project ADD PRIMARY KEY pk_categorie_project (fk_categorie, fk_project);
ALTER TABLE llx_categorie_project ADD INDEX idx_categorie_project_fk_categorie (fk_categorie);
ALTER TABLE llx_categorie_project ADD INDEX idx_categorie_project_fk_project (fk_project);

View File

@ -0,0 +1,23 @@
-- ===================================================================
-- Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
ALTER TABLE llx_cronjob ADD INDEX idx_cronjob_status (status);
ALTER TABLE llx_cronjob ADD INDEX idx_cronjob_datelastrun (datelastrun);
ALTER TABLE llx_cronjob ADD INDEX idx_cronjob_datenextrun (datenextrun);
ALTER TABLE llx_cronjob ADD INDEX idx_cronjob_datestart (datestart);
ALTER TABLE llx_cronjob ADD INDEX idx_cronjob_dateend (dateend);

View File

@ -33,19 +33,19 @@ CREATE TABLE llx_cronjob
md5params varchar(32),
module_name varchar(255),
priority integer DEFAULT 0,
datelastrun datetime, -- date last run and when should be next
datelastrun datetime, -- date last run start (see datelastresult for end with a result)
datenextrun datetime, -- job will be run if current date higher that this date
datestart datetime, -- before this date no jobs will be run
dateend datetime, -- after this date, no more jobs will be run
datelastresult datetime,
datelastresult datetime, -- date last run end
lastresult text,
lastoutput text,
unitfrequency integer NOT NULL DEFAULT 0,
frequency integer NOT NULL DEFAULT 0,
maxrun integer NOT NULL DEFAULT 0, -- set this to 1 for a job queued for on run only
nbrun integer, -- nb of run complete (failed or not)
autodelete integer DEFAULT 0, -- Job can be delete once finished
status integer NOT NULL DEFAULT 1,
autodelete integer DEFAULT 0, -- 0=Job is kept unchanged once nbrun > maxrun or date > dateend, 2=Job must be archived (archive = status 2) once nbrun > maxrun or date > dateend
status integer NOT NULL DEFAULT 1, -- 0=disabled, 1=enabled, 2=archived
fk_user_author integer DEFAULT NULL,
fk_user_mod integer DEFAULT NULL,
fk_mailing integer DEFAULT NULL, -- id of emailing if job was queued to send mass emailing

View File

@ -0,0 +1,20 @@
-- ===================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
ALTER TABLE llx_expedition_extrafields ADD INDEX idx_expedition_extrafields (fk_object);

View File

@ -0,0 +1,26 @@
-- ========================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ========================================================================
create table llx_expedition_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL,
import_key varchar(14) -- import key
) ENGINE=innodb;

View File

@ -0,0 +1,20 @@
-- ===================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
ALTER TABLE llx_expeditiondet_extrafields ADD INDEX idx_expeditiondet_extrafields (fk_object);

View File

@ -0,0 +1,25 @@
-- ===================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
create table llx_expeditiondet_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL, -- object id
import_key varchar(14) -- import key
)ENGINE=innodb;

View File

@ -0,0 +1,20 @@
-- ===================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
ALTER TABLE llx_livraison_extrafields ADD INDEX idx_livraison_extrafields (fk_object);

View File

@ -0,0 +1,26 @@
-- ========================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ========================================================================
create table llx_livraison_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL,
import_key varchar(14) -- import key
) ENGINE=innodb;

View File

@ -0,0 +1,20 @@
-- ===================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
ALTER TABLE llx_livraisondet_extrafields ADD INDEX idx_livraisondet_extrafields (fk_object);

View File

@ -0,0 +1,25 @@
-- ===================================================================
-- Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
--
-- 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 <http://www.gnu.org/licenses/>.
--
-- ===================================================================
create table llx_livraisondet_extrafields
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
tms timestamp,
fk_object integer NOT NULL, -- object id
import_key varchar(14) -- import key
)ENGINE=innodb;

View File

@ -1292,7 +1292,10 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
function migrate_price_facture($db,$langs,$conf)
{
$err=0;
$tmpmysoc=new Societe($db);
$tmpmysoc->setMysoc($conf);
$db->begin();
print '<tr><td colspan="4">';
@ -1333,7 +1336,7 @@ function migrate_price_facture($db,$langs,$conf)
$facligne= new FactureLigne($db);
$facligne->fetch($rowid);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate, 0, 0,$remise_percent_global,'HT',$info_bits,0);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate, 0, 0,$remise_percent_global,'HT',$info_bits,$facligne->product_type,$tmpmysoc);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@ -1407,6 +1410,9 @@ function migrate_price_facture($db,$langs,$conf)
*/
function migrate_price_propal($db,$langs,$conf)
{
$tmpmysoc=new Societe($db);
$tmpmysoc->setMysoc($conf);
$db->begin();
print '<tr><td colspan="4">';
@ -1445,7 +1451,7 @@ function migrate_price_propal($db,$langs,$conf)
$propalligne= new PropaleLigne($db);
$propalligne->fetch($rowid);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$propalligne->product_type,$tmpmysoc);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@ -1552,9 +1558,9 @@ function migrate_price_contrat($db,$langs,$conf)
// On met a jour les 3 nouveaux champs
$contratligne= new ContratLigne($db);
//$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis
$contratligne->id=$rowid;
$contratligne->fetch($rowid);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,0,'HT',$info_bits,0,$tmpmysoc);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,0,'HT',$info_bits,$contratligne->product_type,$tmpmysoc);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@ -1603,6 +1609,9 @@ function migrate_price_commande($db,$langs,$conf)
{
$db->begin();
$tmpmysoc=new Societe($db);
$tmpmysoc->setMysoc($conf);
print '<tr><td colspan="4">';
print '<br>';
@ -1639,7 +1648,7 @@ function migrate_price_commande($db,$langs,$conf)
$commandeligne= new OrderLine($db);
$commandeligne->fetch($rowid);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$commandeligne->product_type,$tmpmysoc);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];
@ -1716,7 +1725,10 @@ function migrate_price_commande($db,$langs,$conf)
function migrate_price_commande_fournisseur($db,$langs,$conf)
{
$db->begin();
$tmpmysoc=new Societe($db);
$tmpmysoc->setMysoc($conf);
print '<tr><td colspan="4">';
print '<br>';
@ -1753,7 +1765,7 @@ function migrate_price_commande_fournisseur($db,$langs,$conf)
$commandeligne= new CommandeFournisseurLigne($db);
$commandeligne->fetch($rowid);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,0);
$result=calcul_price_total($qty,$pu,$remise_percent,$vatrate,0,0,$remise_percent_global,'HT',$info_bits,$commandeligne->product_type,$tmpsoc);
$total_ht = $result[0];
$total_tva = $result[1];
$total_ttc = $result[2];

View File

@ -1,5 +1,4 @@
# Dolibarr language file - en_US - Accounting Expert
CHARSET=UTF-8
ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file
ACCOUNTING_EXPORT_DATE=Date format for export file
ACCOUNTING_EXPORT_PIECE=Export the number of piece
@ -12,8 +11,6 @@ ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name
Accounting=Accounting
Globalparameters=Global parameters
Chartofaccounts=Chart of accounts
Fiscalyear=Fiscal years
Menuaccount=Accounting accounts
Menuthirdpartyaccount=Thirdparty accounts
MenuTools=Tools
@ -33,23 +30,17 @@ Back=Return
Definechartofaccounts=Define a chart of accounts
Selectchartofaccounts=Select a chart of accounts
Validate=Validate
Addanaccount=Add an accounting account
AccountAccounting=Accounting account
AccountAccountingSuggest=Accounting account suggest
Ventilation=Breakdown
ToDispatch=To dispatch
Dispatched=Dispatched
CustomersVentilation=Breakdown customers
SuppliersVentilation=Breakdown suppliers
TradeMargin=Trade margin
Reports=Reports
ByCustomerInvoice=By invoices customers
ByMonth=By Month
NewAccount=New accounting account
Update=Update
List=List
Create=Create
CreateMvts=Create movement
UpdateAccount=Modification of an accounting account
@ -61,7 +52,6 @@ AccountBalanceByMonth=Account balance by month
AccountingVentilation=Breakdown accounting
AccountingVentilationSupplier=Breakdown accounting supplier
AccountingVentilationCustomer=Breakdown accounting customer
Line=Line
CAHTF=Total purchase supplier before tax
InvoiceLines=Lines of invoice to be ventilated
@ -112,22 +102,19 @@ Docref=Reference
Numerocompte=Account
Code_tiers=Thirdparty
Labelcompte=Label account
Debit=Debit
Credit=Credit
Amount=Amount
Sens=Sens
Codejournal=Journal
DelBookKeeping=Delete the records of the general ledger
SellsJournal=Sells journal
PurchasesJournal=Purchases journal
DescSellsJournal=Sells journal
DescPurchasesJournal=Purchases journal
BankJournal=Bank journal
DescBankJournal=Bank journal including all the types of payments other than cash
CashJournal=Cash journal
DescCashJournal=Cash journal including the type of payment cash
FinanceJournal=Finance journal
DescFinanceJournal=Finance journal including all the types of payments by bank account
CashPayment=Cash Payment
@ -150,9 +137,6 @@ Pcgversion=Version of the plan
Pcgtype=Class of account
Pcgsubtype=Under class of account
Accountparent=Root of the account
Active=Statement
NewFiscalYear=New fiscal year
DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers
TotalVente=Total turnover before tax

View File

@ -105,7 +105,6 @@ DetailPosition=رتب الرقم لتعريف موقع القائمة
PersonalizedMenusNotSupported=القوائم الشخصية غير مدعومة
AllMenus=الكل
NotConfigured=النموذج غير مهيء
Setup=الإعداد
Activation=التفعيل
Active=نشطة
SetupShort=الإعداد
@ -193,15 +192,12 @@ ExportOptions=خيارات التصدير
AddDropDatabase=أمر إضافة, حذف قاعدة بيانات
AddDropTable=أمر إضافة حذف الجدول
ExportStructure=البنية
Datas=البيانات
NameColumn=اسم الأعمدة
ExtendedInsert=الإضافة الممددة
NoLockBeforeInsert=لا يوجد أوامر قفل حول الإضافة
DelayedInsert=إضافة متأخرة
EncodeBinariesInHexa=ترميز البيانات الأحادية لستة عشرية
IgnoreDuplicateRecords=تجاهل الأخطاء في السجلات المكررة (تجاهل الإدراج)
Yes=نعم
No=لا
AutoDetectLang=اكتشاف تلقائي (لغة المتصفح)
FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي
Rights=الصلاحيات
@ -285,14 +281,16 @@ ModuleSetup=إعداد وحدة
ModulesSetup=نمائط الإعداد
ModuleFamilyBase=نظام
ModuleFamilyCrm=Ressource العملاء إدارة (إدارة علاقات العملاء)
ModuleFamilyProducts=إدارة المنتجات
ModuleFamilyHr=إدارة الموارد البشرية
ModuleFamilyProducts=Products Management (PM)
ModuleFamilyHr=Human Resource Management (HR)
ModuleFamilyProjects=مشاريع / العمل التعاوني
ModuleFamilyOther=أخرى
ModuleFamilyTechnic=Multi بين وحدات وأدوات
ModuleFamilyExperimental=نماذج تجريبية
ModuleFamilyFinancial=الوحدات المالية (المحاسبة / الخزانة)
ModuleFamilyECM=إدارة المحتوى في المؤسسة
ModuleFamilyPortal=Web sites and other frontal application
ModuleFamilyInterface=Interfaces with external systems
MenuHandlers=قائمة مناولي
MenuAdmin=قائمة تحرير
DoNotUseInProduction=Do not use in production
@ -331,7 +329,7 @@ UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونا
SeeWikiForAllTeam=إلقاء نظرة على صفحة ويكي قائمة كاملة لجميع الجهات الفاعلة والمنظمة
UseACacheDelay= التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ)
DisableLinkToHelpCenter=الاختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول
DisableLinkToHelp=إخفاء ارتباط <b>"ق ٪ أخبار يساعد"</b> على القائمة اليمنى
DisableLinkToHelp=Hide link to online help "<b>%s</b>"
AddCRIfTooLong=ليس هناك التفاف تلقائي ، حتى إذا خرج من خط صفحة على وثائق لفترة طويلة جدا ، يجب إضافة حرف إرجاع نفسك في ناحية النص.
ModuleDisabled=نميطة المعوقين
ModuleDisabledSoNoEvent=نميطة المعوقين بغية خلق حالة أبدا
@ -354,7 +352,7 @@ ThemeDir=جلود دليل
ConnectionTimeout=بمناسبه المهلة
ResponseTimeout=استجابة مهلة
SmsTestMessage=رسالة اختبار من __PHONEFROM__ إلى __PHONETO__
ModuleMustBeEnabledFirst=يجب تمكين <b>%s</b> الوحدة الأولى قبل استخدام هذه الميزة.
ModuleMustBeEnabledFirst=Module <b>%s</b> must be enabled first if you need this feature.
SecurityToken=المفتاح لعناوين المواقع الآمنة
NoSmsEngine=لا مدير مرسل الرسائل القصيرة المتاحة. لم يتم تثبيت SMS المرسل مع مدير التوزيع الافتراضي (لأنها تعتمد على مورد خارجي)، ولكن يمكنك أن تجد بعض على http://www.dolistore.com
PDF=PDF
@ -364,6 +362,7 @@ HideAnyVATInformationOnPDF=إخفاء كل المعلومات المتعلقة
HideDescOnPDF=Hide products description on generated PDF
HideRefOnPDF=Hide products ref. on generated PDF
HideDetailsOnPDF=Hide products lines details on generated PDF
PlaceCustomerAddressToIsoLocation=Use french standard position (La Posteà for customer address position
Library=المكتبة
UrlGenerationParameters=المعلمات لتأمين عناوين المواقع
SecurityTokenIsUnique=استخدام معلمة securekey فريدة لكل URL
@ -394,8 +393,9 @@ ExtrafieldLink=Link to an object
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax : ObjectName:Classpath<br>Example : Societe:societe/class/societe.class.php
LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (localtax is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
@ -524,19 +524,21 @@ Module2400Name=جدول الأعمال
Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال
Module2500Name=إدارة المحتوى الإلكتروني
Module2500Desc=حفظ وتبادل الوثائق
Module2600Name=API services (Web services SOAP)
Module2600Name=API/Web services (SOAP server)
Module2600Desc=Enable the Dolibarr SOAP server providing API services
Module2610Name=API services (Web services REST)
Module2610Name=API/Web services (REST server)
Module2610Desc=Enable the Dolibarr REST server providing API services
Module2650Name=WebServices (client)
Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment)
Module2660Name=Call WebServices (SOAP client)
Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment)
Module2700Name=غرفتر
Module2700Desc=استخدام خدمة غرفتر على الانترنت (www.gravatar.com) لإظهار الصورة من المستخدمين / أعضاء (وجدت مع رسائل البريد الإلكتروني الخاصة بهم). في حاجة الى الوصول الى شبكة الانترنت
Module2800Desc=FTP Client
Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP التحويلات Maxmind القدرات
Module3100Name=Skype
Module3100Desc=Add a Skype button into card of adherents / third parties / contacts
Module3100Desc=Add a Skype button into card of users / third parties / contacts / members
Module4000Name=HRM
Module4000Desc=Human resources management
Module5000Name=شركة متعددة
Module5000Desc=يسمح لك لإدارة الشركات المتعددة
Module6000Name=Workflow
@ -802,7 +804,7 @@ Permission59003=Read every user margin
DictionaryCompanyType=Thirdparties type
DictionaryCompanyJuridicalType=Juridical kinds of thirdparties
DictionaryProspectLevel=Prospect potential level
DictionaryCanton=State/Cantons
DictionaryCanton=State/Province
DictionaryRegion=Regions
DictionaryCountry=Countries
DictionaryCurrency=Currencies
@ -840,14 +842,12 @@ VATIsUsedExampleFR=في فرنسا ، فإن ذلك يعني وجود منظما
VATIsNotUsedExampleFR=في فرنسا ، فإن ذلك يعني أن الجمعيات غير المعلنة ضريبة القيمة المضافة أو شركات أو مؤسسات المهن الحرة التي اختارت المشاريع الصغيرة النظام الضريبي (ضريبة القيمة المضافة في الانتخاب) ، ودفع ضريبة القيمة المضافة في الانتخاب دون أي إعلان من ضريبة القيمة المضافة. هذا الخيار سيتم عرض المرجعي "غير الضريبة على القيمة المضافة المطبقة -- الفن - 293B من المجموعة الاستشارية لاندونيسيا" على الفواتير.
##### Local Taxes #####
LTRate=Rate
LocalTax1IsUsed=Use second tax
LocalTax1IsNotUsed=Do not use second tax
LocalTax1IsUsedDesc=Use a second type of tax (other than VAT)
LocalTax1IsNotUsedDesc=Do not use other type of tax (other than VAT)
LocalTax1Management=Second type of tax
LocalTax1IsUsedExample=
LocalTax1IsNotUsedExample=
LocalTax2IsUsed=Use third tax
LocalTax2IsNotUsed=Do not use third tax
LocalTax2IsUsedDesc=Use a third type of tax (other than VAT)
LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT)
@ -922,7 +922,6 @@ MenuCompanySetup=الشركة / المؤسسة
MenuNewUser=مستخدم جديد
MenuTopManager=المدير الأعلى
MenuLeftManager=مدير القائمة اليمنى
MenuManager=Menu manager
MenuSmartphoneManager=الهاتف الذكي القائمة مدير
DefaultMenuTopManager=المدير الأعلى
DefaultMenuLeftManager=مدير القائمة اليمنى
@ -931,14 +930,14 @@ DefaultMenuSmartphoneManager=الهاتف الذكي القائمة مدير
Skin=موضوع الجلد
DefaultSkin=موضوع التقصير الجلد
MaxSizeList=الحد الأقصى لطول قائمة
DefaultMaxSizeList=تقصير المدة القصوى للقائمة
DefaultMaxSizeList=Default max length for lists
DefaultMaxSizeShortList=Default max length for short lists (ie in customer card)
MessageOfDay=رسالة اليوم
MessageLogin=ادخل صفحة الرسالة
PermanentLeftSearchForm=دائم البحث عن شكل القائمة اليمنى
DefaultLanguage=اللغة الافتراضية لاستخدام (شفرة اللغة)
EnableMultilangInterface=تتيح واجهة متعددة اللغات
EnableShowLogo=عرض الشعار على اليسار القائمة
EnableHtml5=Enable Html5 (Developement - Only available on Eldy template)
SystemSuccessfulyUpdated=النظام الخاص بك تم تحديث بنجاح
CompanyInfo=الشركة / المؤسسة المعلومات
CompanyIds=الشركة / المؤسسة الهويات
@ -975,6 +974,7 @@ Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=تأخير التسامح (في يوم)
Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=تأخير التسامح (في يوم) في حالة تأهب قبل يوم في انتظار التسوية المصرفية
Delays_MAIN_DELAY_MEMBERS=تأخير التسامح (في يوم) في حالة تأهب قبل يوم تأخير رسوم العضوية
Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=تأخير التسامح (في يوم) في حالة تأهب قبل لإيداع الشيكات للقيام
Delays_MAIN_DELAY_EXPENSEREPORTS=Tolerance delay (in days) before alert for expense reports to approve
SetupDescription1=جميع البارامترات المتاحة في مجال الإعداد تسمح لك قبل البدء في الإعداد Dolibarr استخدامه.
SetupDescription2=2 إن أهم الخطوات هي الإعداد 2 أول من غادر في إعداد القائمة ، وهذا يعني الشركة / المؤسسة صفحة إعداد صفحة إعداد وحدات :
SetupDescription3=البارامترات في <b>إعداد</b> القائمة <b>--> الشركة / المؤسسة</b> المطلوب لأن مدخلات تستخدم المعلومات عن Dolibarr عرض وتعديل السلوك Dolibarr (على سبيل المثال لخصائص تتعلق بلدكم).
@ -1002,6 +1002,7 @@ SystemAreaForAdminOnly=هذا المجال المتاح لمدير المستخ
CompanyFundationDesc=تعديل على هذه الصفحة كل المعلومات المعروفة للشركة أو مؤسسة تحتاج لإدارة
DisplayDesc=يمكنك ان تختار كل معلمة إلى Dolibarr هنا الشكل والمظهر
AvailableModules=تتوفر وحدات
DeprecatedModules=Deprecated modules
ToActivateModule=لتفعيل وحدات ، على الإعداد منطقة الصفحة الرئيسية&gt; الإعداد -> الوحدات).
SessionTimeOut=للمرة الخمسين
SessionExplanation=تضمن هذا العدد أن الدورة لن ينتهي قبل هذا التأخير. PHP sessoin ولكن الإدارة لا الكفالة التي دائما تنتهي الدورة بعد هذا التأخير : ويحدث هذا إذا كان نظام لتنظيف مخبأ الدورة الجارية. <br> ملاحظة : مع أي نظام الداخلي PHP عملية تنظيف كل دورة حوالي <b>٪ ق / ق ٪</b> فقط ولكن وصول وصول أدلى به خلال دورات أخرى.
@ -1104,13 +1105,15 @@ XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache is loaded.
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp".
FieldEdition=Edition of field %s
FixTZ=TimeZone fix
FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced)
GetBarCode=Get barcode
EmptyNumRefModelDesc=The code is free. This code can be modified at any time.
##### Module password generation
PasswordGenerationStandard=عودة كلمة سر ولدت الداخلية وفقا لخوارزمية Dolibarr : 8 أحرف مشتركة تتضمن الأرقام والحروف في حرف صغير.
PasswordGenerationNone=لا توحي بأي كلمة المرور المتولدة. يجب أن تكون كلمة السر في نوع يدويا.
PasswordGenerationNone=Do not suggest any generated password. Password must be typed in manually.
PasswordGenerationPerso=Return a password according to your personally defined configuration.
SetupPerso=According to your configuration
PasswordPatternDesc=Password pattern description
##### Users setup #####
UserGroupSetup=مستخدمين والمجموعات وحدة الإعداد
GeneratePassword=وتشير ولدت كلمة السر
@ -1120,6 +1123,8 @@ EncryptedPasswordInDatabase=السماح للتشفير كلمات السر في
DisableForgetPasswordLinkOnLogonPage=لا تظهر وصلة "نسيت كلمة المرور" على صفحة تسجيل الدخول
UsersSetup=شاهد الإعداد وحدة
UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد
##### HRM setup #####
HRMSetup=HRM module setup
##### Company setup #####
CompanySetup=وحدة الإعداد للشركات
CompanyCodeChecker=نموذج للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد)
@ -1172,6 +1177,7 @@ CreditNotePDFModules=المذكرة وثيقة من وثائق الائتمان
CreditNote=علما الائتمان
CreditNotes=ويلاحظ الائتمان
ForceInvoiceDate=قوة تاريخ الفاتورة تاريخ المصادقة على
AllowCreditNoteWithoutRelatedInvoice=Allow to create credit note without a related invoice
DisableRepeatable=تعطيل تكرار الفواتير
SuggestedPaymentModesIfNotDefinedInInvoice=واقترح على طريقة دفع الفواتير تلقائيا اذا لم تعرف للفاتورة
EnableEditDeleteValidInvoice=تتيح إمكانية تعديل أو حذف صحيحة دون دفع الفاتورة
@ -1179,6 +1185,7 @@ SuggestPaymentByRIBOnAccount=وتشير دفع سحب على حساب
SuggestPaymentByChequeToAddress=وتشير إلى دفع الشيكات
FreeLegalTextOnInvoices=نص حر على الفواتير
WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty)
PaymentsNumberingModule=Payments numbering model
##### Proposals #####
PropalSetup=وحدة إعداد مقترحات تجارية
CreateForm=خلق أشكال
@ -1200,6 +1207,7 @@ SupplierProposalPDFModules=Price requests suppliers documents models
FreeLegalTextOnSupplierProposal=Free text on price requests suppliers
WatermarkOnDraftSupplierProposal=Watermark on draft price requests suppliers (none if empty)
BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Ask for bank account destination of price request
WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order
##### Orders #####
OrdersSetup=أوامر إدارة الإعداد
OrdersNumberingModules=أوامر الترقيم نمائط
@ -1227,6 +1235,7 @@ ContractsNumberingModules=عقود ترقيم الوحدات
TemplatePDFContracts=Contracts documents models
FreeLegalTextOnContracts=Free text on contracts
WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty)
ContractsAndServices=List of contracts and services
##### Members #####
MembersSetup=أعضاء وحدة الإعداد
MemberMainOptions=الخيارات الرئيسية
@ -1408,6 +1417,7 @@ SetDefaultBarcodeTypeThirdParties=النوع الافتراضي لاستخدام
UseUnits=Define a unit of measure for Quantity during order, proposal or invoice lines edition
ProductCodeChecker= Module for product code generation and checking (product or service)
ProductOtherConf= Product / Service configuration
IsNotADir=is not a directory!
##### Syslog #####
SyslogSetup=Syslog حدة الإعداد
SyslogOutput=سجل الناتج
@ -1519,8 +1529,7 @@ DetailLevel=المستوى (-1 : الأعلى ، 0 : رأس القائمة ،&gt
ModifMenu=قائمة التغيير
DeleteMenu=حذف من القائمة الدخول
ConfirmDeleteMenu=هل أنت متأكد من أنك تريد حذف القائمة دخول <b>٪ ق؟</b>
DeleteLine=حذف السطر
ConfirmDeleteLine=هل أنت متأكد من أنك تريد حذف هذا الخط؟
FailedToInitializeMenu=Failed to initialize menu
##### Tax #####
TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=ضريبة القيمة المضافة المستحقة
@ -1551,7 +1560,9 @@ AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filt
AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view
AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda
##### ClickToDial #####
ClickToDialDesc=هذا النموذج يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال.
ClickToDialDesc=This module allows to make phone numbers clickable. A click on this icon will call make your phone to call the phone number. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example.
ClickToDialUseTelLink=Use just a link "tel:" on phone numbers
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on same computer than the browser, and called when you click on a link in your browser that start with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
##### Point Of Sales (CashDesk) #####
CashDesk=نقاط البيع
CashDeskSetup=مكتب الإعداد وحدة نقدية
@ -1577,7 +1588,7 @@ EndPointIs=الصابون العملاء يجب إرسال الطلبات إلى
ApiSetup=API module setup
ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services.
KeyForApiAccess=Key to use API (parameter "api_key")
ApiProductionMode=Enable production mode
ApiProductionMode=Enable production mode (this will activate use of a caches for services management)
ApiEndPointIs=You can access to the API at url
ApiExporerIs=You can explore the API at url
OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed
@ -1614,7 +1625,7 @@ TaskModelModule=Tasks reports document model
UseSearchToSelectProject=Use autocompletion fields to choose project (instead of using a list box)
##### ECM (GED) #####
ECMSetup = GED Setup
ECMAutoTree = Automatic tree folder and document
ECMAutoTree = Show also the automatic tree folder and document
##### Fiscal Year #####
FiscalYears=Fiscal years
FiscalYear=Fiscal year
@ -1625,8 +1636,6 @@ OpenFiscalYear=Open fiscal year
CloseFiscalYear=Close fiscal year
DeleteFiscalYear=Delete fiscal year
ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ?
Opened=Open
Closed=Closed
AlwaysEditable=Can always be edited
MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
NbMajMin=Minimum number of uppercase characters
@ -1654,7 +1663,8 @@ SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade desc
InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature.
ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong>
HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
HighlightLinesColor=Color of highlight line when mouse move passes over (keep empty for no highlight)
HighlightLinesColor=Highlight color of the line when the mouse passes over (keep empty for no highlight)
LinkColor=Color of links
PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective
NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes
BackgroundColor=Background color
@ -1688,3 +1698,10 @@ MailToSendSupplierRequestForQuotation=To send quotation request to supplier
MailToSendSupplierOrder=To send supplier order
MailToSendSupplierInvoice=To send supplier invoice
MailToThirdparty=To send email from thirdparty page
ByDefaultInList=Show by default on list view
YouUseLastStableVersion=You use the last stable version
TitleExampleForMajorRelease=Example of message you can use to announce this major release (feel free to use it on your web sites)
TitleExampleForMaintenanceRelease=Example of message you can use to announce this maintenance release (feel free to use it on your web sites)
ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version %s is a major release with a lot of new features for both users and developers. You can download it from the download area of http://www.dolibarr.org portal (subdirectory Stable versions). You can read <a href="https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog">ChangeLog</a> for complete list of changes.
ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so it contains only fixes of bugs. We recommend everybody using an older version to upgrade to this one. As any maintenance release, no new features, nor data structure change is present into this version. You can download it from the download area of http://www.dolibarr.org portal (subdirectory Stable versions). You can read <a href="https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog">ChangeLog</a> for complete list of changes.
MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases.

View File

@ -59,7 +59,6 @@ PaymentBack=دفع العودة
Payments=المدفوعات
PaymentsBack=عودة المدفوعات
PaidBack=Paid back
DatePayment=تاريخ الدفع
DeletePayment=حذف الدفع
ConfirmDeletePayment=هل أنت متأكد من أنك تريد حذف هذا المبلغ؟
ConfirmConvertToReduc=هل تريد تحويل هذه القروض إلى الودائع أو علما مطلقة الخصم؟ <br> المبلغ حتى يتم حفظ جميع الخصومات ويمكن استخدام خصم لحالي أو مستقبلي الفاتورة لهذا العميل.
@ -74,6 +73,7 @@ PaymentsAlreadyDone=المدفوعات قد فعلت
PaymentsBackAlreadyDone=Payments back already done
PaymentRule=دفع الحكم
PaymentMode=نوع الدفع
PaymentModeShort=Payment type
PaymentTerm=Payment term
PaymentConditions=Payment terms
PaymentConditionsShort=Payment terms
@ -88,6 +88,7 @@ ClassifyCanceled=تصنيف 'المهجورة'
ClassifyClosed=تصنيف 'مغلقة'
ClassifyUnBilled=Classify 'Unbilled'
CreateBill=إنشاء الفاتورة
CreateCreditNote=Create credit note
AddBill=Create invoice or credit note
AddToDraftInvoices=Add to draft invoice
DeleteBill=شطب فاتورة
@ -101,7 +102,6 @@ ConvertToReduc=تحويل الخصم في المستقبل
EnterPaymentReceivedFromCustomer=دخول الدفع الواردة من العملاء
EnterPaymentDueToCustomer=من المقرر أن يسدد العميل
DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero
Amount=مبلغ
PriceBase=سعر الأساس
BillStatus=حالة الفاتورة
BillStatusDraft=مشروع (لا بد من التحقق من صحة)
@ -185,7 +185,6 @@ ShowInvoiceReplace=وتظهر استبدال الفاتورة
ShowInvoiceAvoir=وتظهر المذكرة الائتمان
ShowInvoiceDeposit=وتبين أن تودع الفاتورة
ShowPayment=وتظهر الدفع
File=ملف
AlreadyPaid=دفعت بالفعل
AlreadyPaidBack=Already paid back
AlreadyPaidNoCreditNotesNoDeposits=دفعت بالفعل (بدون تلاحظ الائتمان والودائع)
@ -216,8 +215,8 @@ DateEcheance=الحد من الموعد المقرر
DateInvoice=تاريخ الفاتورة
NoInvoice=لا الفاتورة
ClassifyBill=تصنيف الفاتورة
SupplierBillsToPay=دفع فواتير الموردين
CustomerBillsUnpaid=فواتير غير مدفوعة للعملاء
SupplierBillsToPay=Unpaid supplier invoices
CustomerBillsUnpaid=Unpaid customer invoices
NonPercuRecuperable=غير القابلة للاسترداد
SetConditions=تحدد شروط الدفع
SetMode=حدد طريقة الدفع
@ -238,7 +237,6 @@ Reduction=تخفيض
ReductionShort=Reduc.
Reductions=التخفيضات
ReductionsShort=Reduc.
Discount=الخصم
Discounts=خصومات
AddDiscount=إضافة الخصم
AddRelativeDiscount=خلق خصم قريب
@ -351,7 +349,7 @@ ExtraInfos=معلومات اضافية
RegulatedOn=وتنظم على
ChequeNumber=رقم الشيك
ChequeOrTransferNumber=شيك / نقل رقم
ChequeMaker=فحص جهاز الإرسال
ChequeMaker=Check/Transfer transmitter
ChequeBank=الشيكات المصرفية
CheckBank=Check
NetToBePaid=الصافي للدفع

View File

@ -58,7 +58,7 @@ BoxLastExpiredServices=%s مشاركة أقدم اتصالات مع خدمات
BoxTitleLastActionsToDo=ق ٪ الإجراءات الأخيرة للقيام
BoxTitleLastContracts=%s العقود الماضية
BoxTitleLastModifiedDonations=%s آخر تعديل التبرعات
BoxTitleLastModifiedExpenses=%s آخر تعديل النفقات
BoxTitleLastModifiedExpenses=Last %s modified expense reports
BoxGlobalActivity=Global activity (invoices, proposals, orders)
FailedToRefreshDataInfoNotUpToDate=فشلت في تجديد تدفق RSS. اخر تحديث تاريخ : ٪ ق
LastRefreshDate=تاريخ آخر تجديد

View File

@ -38,3 +38,4 @@ ShowStock=عرض مستودع
DeleteArticle=انقر لإزالة هذه المادة
FilterRefOrLabelOrBC=Search (Ref/Label)
UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock.
DolibarrReceiptPrinter=Dolibarr Receipt Printer

View File

@ -56,7 +56,6 @@ ReportByCustomers=تقرير للعملاء
ReportByQuarter=تقرير الربع
CivilityCode=قانون الكياسة
RegisteredOffice=المكتب المسجل
Name=اسم
Lastname=اللقب
Firstname=Firstname
PostOrFunction=وظيفة / وظيفة
@ -64,6 +63,7 @@ UserTitle=العنوان
Surname=لقب / مزيف
Address=عنوان
State=الولاية / المقاطعة
StateShort=State
Region=المنطقة
Country=قطر
CountryCode=رمز البلد
@ -88,8 +88,10 @@ VATIsNotUsed=ضريبة القيمة المضافة لا يستخدم
CopyAddressFromSoc=Fill address with thirdparty address
NoEmailDefined=There is no email defined
##### Local Taxes #####
LocalTax1IsUsed=Use second tax
LocalTax1IsUsedES= يتم استخدام الطاقة المتجددة
LocalTax1IsNotUsedES= لا يتم استخدام الطاقة المتجددة
LocalTax2IsUsed=Use third tax
LocalTax2IsUsedES= يستخدم IRPF
LocalTax2IsNotUsedES= IRPF لا يستخدم
LocalTax1ES=تعاود
@ -109,7 +111,7 @@ ProfId2Short=معرف الأستاذ 2
ProfId3Short=الأستاذ معرف 3
ProfId4Short=الأستاذ معرف 4
ProfId5Short=البروفيسور رقم 5
ProfId6Short=Prof. id 5
ProfId6Short=Prof. id 6
ProfId1=الهوية المهنية (1)
ProfId2=الهوية المهنية (2)
ProfId3=3 الهوية المهنية
@ -284,6 +286,8 @@ PersonalInformations=البيانات الشخصية
AccountancyCode=قانون المحاسبة
CustomerCode=رمز العميل
SupplierCode=رمز المورد
CustomerCodeShort=Customer code
SupplierCodeShort=Supplier code
CustomerAccount=حساب الزبون
SupplierAccount=مورد الحساب
CustomerCodeDesc=شفرة الزبون ، فريدة من نوعها لجميع العملاء
@ -302,7 +306,7 @@ ListOfCustomersContacts=قائمة عملاء الاتصالات
ListOfSuppliersContacts=قائمة الموردين اتصالات
ListOfCompanies=قائمة الشركات
ListOfThirdParties=قائمة أطراف ثالثة
ShowCompany=وتبين للشركة
ShowCompany=Show thirdparty
ShowContact=وتظهر الاتصال
ContactsAllShort=جميع (بدون فلتر)
ContactType=نوع الاتصال
@ -414,7 +418,7 @@ UniqueThirdParties=مجموع الأطراف الثالثة فريدة من نو
InActivity=فتح
ActivityCeased=مغلق
ActivityStateFilter=نشاط المركز
ProductsIntoElements=List of products into %s
ProductsIntoElements=List of products/services into %s
CurrentOutstandingBill=Current outstanding bill
OutstandingBill=Max. for outstanding bill
OutstandingBillReached=Reached max. for outstanding bill

View File

@ -79,16 +79,21 @@ ListPayment=قائمة المدفوعات
ListOfPayments=قائمة المدفوعات
ListOfCustomerPayments=قائمة مدفوعات العملاء
ListOfSupplierPayments=قائمة الموردين المدفوعات
DatePayment=تاريخ الدفع
DateStartPeriod=Date start period
DateEndPeriod=Date end period
NewVATPayment=دفع ضريبة القيمة المضافة الجديدة
newLT2PaymentES=جديد IRPF دفع
newLT1Payment=New tax 2 payment
newLT2Payment=New tax 3 payment
LT1Payment=Tax 2 payment
LT1Payments=Tax 2 payments
LT2Payment=Tax 3 payment
LT2Payments=Tax 3 payments
newLT1PaymentES=New RE payment
LT2PaymentES=IRPF الدفع
LT2PaymentsES=الدفعات IRPF
newLT2PaymentES=جديد IRPF دفع
LT1PaymentES=RE Payment
LT1PaymentsES=RE Payments
LT2PaymentES=IRPF الدفع
LT2PaymentsES=الدفعات IRPF
VATPayment=دفع ضريبة القيمة المضافة
VATPayments=دفع ضريبة القيمة المضافة
VATRefund=VAT Refund
@ -99,6 +104,8 @@ TotalToPay=على دفع ما مجموعه
TotalVATReceived=تلقى مجموع الضريبة على القيمة المضافة
CustomerAccountancyCode=قانون محاسبة العملاء
SupplierAccountancyCode=مورد قانون المحاسبة
CustomerAccountancyCodeShort=Cust. account. code
SupplierAccountancyCodeShort=Sup. account. code
AccountNumberShort=رقم الحساب
AccountNumber=رقم الحساب
NewAccount=حساب جديد
@ -140,9 +147,9 @@ AnnualByCompaniesInputOutputMode=ميزان الإيرادات والنفقات
SeeReportInInputOutputMode=انظر التقرير <b>sIncomes ٪</b> بين <b>المصروفات ٪ ق</b> قال <b>المحاسبة النقدية</b> لحساب المدفوعات الفعلية
SeeReportInDueDebtMode=انظر التقرير <b>sClaims ٪</b> بين <b>ديونها ٪ ق الالتزام والمحاسبة</b> وقال لحساب فواتير
RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included
RulesResultDue=-- المبالغ المبينة مع كل الضرائب وشملت <br> -- ويشمل الفواتير غير المسددة والنفقات والضريبة على القيمة المضافة المدفوعة سواء كانوا أم لا. <br> -- يقوم على تاريخ المصادقة على الفواتير وضريبة القيمة المضافة وعلى الموعد المقرر لتغطية النفقات.
RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT. <br>- It is based on the payment dates of the invoices, expenses and VAT.
RulesCADue=-- ويشمل العملاء الفواتير المستحقة ما إذا كانت دفعت أم لا. <br> -- يقوم على تاريخ المصادقة على هذه الفواتير. <br>
RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the validation date of invoices and VAT and on the due date for expenses. For salaries defined with Salary module, the value date of payment is used.
RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation.
RulesCADue=- It includes the client's due invoices whether they are paid or not. <br>- It is based on the validation date of these invoices.<br>
RulesCAIn=-- ويشمل جميع الفعال دفع الفواتير الواردة من العملاء. <br> -- يقوم على دفع هذه الفواتير تاريخ <br>
DepositsAreNotIncluded=- يتم ولا تشمل ودائع الفواتير
DepositsAreIncluded=- وترد الفواتير ودائع
@ -192,7 +199,6 @@ ByProductsAndServices=By products and services
RefExt=External ref
ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice".
LinkedOrder=Link to order
ReCalculate=Recalculate
Mode1=Method 1
Mode2=Method 2
CalculationRuleDesc=To calculate total VAT, there is two methods:<br>Method 1 is rounding vat on each line, then summing them.<br>Method 2 is summing all vat on each line, then rounding result.<br>Final result may differs from few cents. Default mode is mode <b>%s</b>.

View File

@ -19,6 +19,7 @@ ServiceStatusLateShort=انتهى
ServiceStatusClosed=مغلقة
ServicesLegend=خدمات أسطورة
Contracts=عقود
ContractsSubscriptions=Contracts/Subscriptions
ContractsAndLine=Contracts and line of contracts
Contract=العقد
ContractLine=Contract line
@ -30,6 +31,7 @@ MenuRunningServices=ادارة الخدمات
MenuExpiredServices=انتهت الخدمات
MenuClosedServices=أغلقت الخدمات
NewContract=العقد الجديد
NewContractSubscription=New contract/subscription
AddContract=Create contract
SearchAContract=بحث عقد
DeleteAContract=الغاء العقد

View File

@ -7,6 +7,7 @@ DeliveryOrders=توصيل الطلبات
DeliveryDate=تاريخ التسليم
DeliveryDateShort=Deliv. تاريخ
CreateDeliveryOrder=ومن أجل توليد التسليم
DeliveryStateSaved=Delivery state saved
QtyDelivered=الكمية المسلمة
SetDeliveryDate=حدد تاريخ الشحن
ValidateDeliveryReceipt=تحقق من إنجاز ورود
@ -24,3 +25,5 @@ Deliverer=المنفذ :
Sender=مرسل
Recipient=المتلقي
ErrorStockIsNotEnough=There's not enough stock
Shippable=Shippable
NonShippable=Not Shippable

View File

@ -1,5 +1,4 @@
# Dolibarr language file - Source file is en_US - ecm
MenuECM=وثائق
DocsMine=بلدي وثائق
DocsGenerated=ولدت وثائق
DocsElements=عناصر وثائق

View File

@ -3,8 +3,6 @@
# No errors
NoErrorCommitIsDone=No error, we commit
# Errors
Error=خطأ
Errors=أخطاء
ErrorButCommitIsDone=Errors found but we validate despite this
ErrorBadEMail=بريد إلكتروني خاطئ %s
ErrorBadUrl=عنوان الموقع هو الخطأ %s
@ -172,8 +170,11 @@ ErrorFieldMustBeANumeric=Field <b>%s</b> must be a numeric value
ErrorFieldMustBeAnInteger=Field <b>%s</b> must be an integer
ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided
ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status
ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu)
ErrorSavingChanges=An error has ocurred when saving the changes
# Warnings
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.
WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined
WarningSafeModeOnCheckExecDir=انذار ، فب <b>safe_mode</b> الخيار في ذلك تخزين الأمر يجب أن يكون داخل الدليل الذي أعلنته <b>safe_mode_exec_dir</b> المعلمة بي.
WarningAllowUrlFopenMustBeOn=<b>allow_url_fopen</b> المعلم يجب أن يوضع <b>على</b> المدون في <b>php.ini</b> لتعمل هذه الوحدة بشكل كامل. يجب عليك أن تعدل عن هذا الملف يدويا.

View File

@ -24,5 +24,5 @@ BackToHelpCenter=Otherwise, click here to go <a href=بخلاف ذلك ، انق
LinkToGoldMember=تستطيع الاتصال به من قبل المدرب مختار مسبقا لغتك Dolibarr (٪) عن طريق النقر فوق القطعة له (والحد الاعلى لسعر يتم تحديثها تلقائيا) :
PossibleLanguages=وأيد لغات
MakeADonation=مساعدة Dolibarr المشروع ، تقديم تبرع
SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation
SubscribeToFoundation=مساعدة مشروع Dolibarr، الاشتراك في الجمعية
SeeOfficalSupport=For official Dolibarr support in your language: <br><b><a href="%s" target="_blank">%s</a></b>

View File

@ -0,0 +1,19 @@
# Dolibarr language file - en_US - hrm
# Admin
HRM_EMAIL_EXTERNAL_SERVICE=Email to prevent HRM external service
Establishments=Establishments
Establishment=Establishment
NewEstablishment=New establishment
DeleteEstablishment=Delete establishment
ConfirmDeleteEstablishment=Are-you sure to delete this establishment ?
OpenEtablishment=Open establishment
CloseEtablishment=Close establishment
# Dictionary
DictionaryDepartment=HRM - Department list
DictionaryFunction=HRM - Function list
# Module
ListOfEmployees=List of employees
Employees=Employees
Employee=Employee
NewEmployee=New employee
EmployeeCard=Employee card

View File

@ -52,9 +52,7 @@ ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغ
DatabaseServer=خادم قاعدة البيانات
DatabaseName=اسم قاعدة البيانات
DatabasePrefix=قاعدة بيانات بادئة الجدول
Login=تسجيل الدخول
AdminLogin=ادخل لDolibarr مدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال
Password=كلمة السر
PasswordAgain=أعد كتابة كلمة المرور مرة ثانية
AdminPassword=Dolibarr كلمة السر لمدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال
CreateDatabase=إنشاء قاعدة بيانات
@ -62,14 +60,11 @@ CreateUser=إنشاء مستخدم
DatabaseSuperUserAccess=قاعدة بيانات -- وصول مستخدم الكومبيوتر ذو الصلاحيات العليا
CheckToCreateDatabase=المربع إذا كان لا وجود قاعدة بيانات ، ويجب تهيئة. <br> في هذه الحالة ، يجب عليك ملء ادخل كلمة السر لحساب المستعملين المتميزين في أسفل هذه الصفحة.
CheckToCreateUser=المربع اذا ادخل لا وجود له ، ويجب تهيئة. <br> في هذه الحالة ، يجب عليك ملء ادخل كلمة السر لحساب المستعملين المتميزين في أسفل هذه الصفحة.
Experimental=(التجريبية وغير التشغيلية)
Deprecated=(deprecated)
DatabaseRootLoginDescription=ادخل يسمح للمستخدم لإنشاء قواعد بيانات جديدة أو المستخدمين الجدد ، وإذا كانت غير مجدية وقاعدة البيانات وقاعدة البيانات ادخل موجود بالفعل (مثل عندما كنت استضافته استضافة ويب).
KeepEmptyIfNoPassword=ترك فارغا إذا لم المستخدم كلمة السر (تجنب هذا؟)
SaveConfigurationFile=إنقاذ القيم
ConfigurationSaving=إنقاذ ملفات
ServerConnection=اتصال الخادم
DatabaseConnection=قاعدة بيانات الصدد
DatabaseCreation=إنشاء قاعدة بيانات
UserCreation=إنشاء مستخدم
CreateDatabaseObjects=إنشاء قاعدة بيانات الأجسام
@ -92,7 +87,6 @@ GoToDolibarr=الذهاب إلى Dolibarr
GoToSetupArea=الذهاب إلى Dolibarr (مجال الإعداد)
MigrationNotFinished=نسخة من قاعدة البيانات الخاصة بك لا يصل تماما حتى الآن ، لذلك سيكون لديك لتشغيل عملية الترقية مرة أخرى.
GoToUpgradePage=الذهاب لتحديث الصفحة مرة أخرى
Examples=أمثلة
WithNoSlashAtTheEnd=بدون خفض "/" في نهاية
DirectoryRecommendation=وrecommanded به لاستخدام دليل خارج الدليل الخاص من صفحات موقعك.
LoginAlreadyExists=موجود بالفعل
@ -113,7 +107,6 @@ Upgrade=ترقية
UpgradeDesc=استخدام هذه الطريقة إذا كنت قد حلت محل القديمة Dolibarr الملفات من الملفات مع إصدار أحدث. وهذا من شأنه رفع مستوى قاعدة البيانات والبيانات.
Start=يبدأ
InstallNotAllowed=الإعداد غير مسموح به <b>conf.php</b> الاذونات
NotAvailable=غير متاحة
YouMustCreateWithPermission=يجب إنشاء ملف ق ٪ ومجموعة الكتابة على أذونات لملقم الويب أثناء عملية التثبيت.
CorrectProblemAndReloadPage=يرجى تحديد المشكلة والصحافة F5 لإعادة تحميل الصفحة.
AlreadyDone=بالفعل هاجر
@ -155,7 +148,7 @@ MigrationFinished=الانتهاء من الهجرة
LastStepDesc=<strong>الخطوة الأخيرة</strong> : تعريف المستخدم وكلمة السر هنا كنت تخطط لاستخدامها للاتصال البرمجيات. لا تفقد هذا كما هو حساب لإدارة جميع الآخرين.
ActivateModule=تفعيل وحدة %s
ShowEditTechnicalParameters=انقر هنا لعرض/تحرير المعلمات المتقدمة (وضع الخبراء)
WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process...
WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40/41/42/43), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process...
ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s)
#########

View File

@ -84,9 +84,12 @@ EachInvoiceWillBeAttachedToEmail=A document using default invoice document templ
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails
RemindSent=%s reminder(s) sent
AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent)
AllRecipientSelected=All thirdparties selected and if an email is set.
NoRemindSent=No EMail reminder sent
ResultOfMassSending=Result of mass EMail reminders sending
ResultOfMailSending=Result of mass EMail sending
NbSelected=Nb selected
NbIgnored=Nb ignored
NbSent=Nb sent
# Libelle des modules de liste de destinataires mailing
MailingModuleDescContactCompanies=اتصالات لجميع الأطراف الثالثة (العملاء ، والاحتمال ، والمورد ،...)
@ -97,7 +100,7 @@ MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname
MailingModuleDescContactsCategories=أطراف ثالثة مع رسائل البريد الإلكتروني (حسب الفئة)
MailingModuleDescDolibarrContractsLinesExpired=أطراف ثالثة مع انتهاء العقد خطوط
MailingModuleDescContactsByCompanyCategory=اتصالات من أطراف ثالثة (من قبل أطراف ثالثة الفئة)
MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category
MailingModuleDescContactsByCategory=Contacts/addresses of third parties (by category)
MailingModuleDescMembersCategories=أعضاء مؤسسة (حسب الفئات)
MailingModuleDescContactsByFunction=اتصالات من أطراف ثالثة (من قبل المنصب / الوظيفة)
LineInFile=خط المستندات في ملف ٪

View File

@ -28,6 +28,7 @@ NoTranslation=No translation
NoRecordFound=No record found
NoError=أي خطأ
Error=خطأ
Errors=Errors
ErrorFieldRequired=الميدان '٪ ق' مطلوب
ErrorFieldFormat=الميدان '٪ ق' سيئة القيمة
ErrorFileDoesNotExists=ملف ٪ ق لا يوجد
@ -59,6 +60,7 @@ ErrorCantLoadUserFromDolibarrDatabase=فشلت في العثور على المس
ErrorNoVATRateDefinedForSellerCountry=خطأ ، لم يعرف لمعدلات ضريبة القيمة المضافة فى البلاد ٪ ق.
ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'.
ErrorFailedToSaveFile=خطأ ، وفشلت في انقاذ الملف.
NotAuthorized=You are not authorized to do that.
SetDate=Set date
SelectDate=Select a date
SeeAlso=See also %s
@ -97,6 +99,7 @@ DolibarrHasDetectedError=Dolibarr اكتشفت خطأ فني
InformationToHelpDiagnose=هذه هي المعلومات التي يمكن أن تساعد على تشخيص
MoreInformation=مزيد من المعلومات
TechnicalInformation=Technical information
TechnicalID=Technical ID
NotePublic=علما (العامة)
NotePrivate=المذكرة (الخاصة)
PrecisionUnitIsLimitedToXDecimals=Dolibarr كان الإعداد بدقة للحد من أسعار الوحدات إلى <b>٪ ق</b> عشرية.
@ -228,6 +231,7 @@ DateAndHour=Date and hour
DateStart=تاريخ البدء
DateEnd=نهاية التاريخ
DateCreation=تاريخ الإنشاء
DateCreationShort=Creat. date
DateModification=تعديل التاريخ
DateModificationShort=Modif. تاريخ
DateLastModification=تاريخ آخر تعديل
@ -384,6 +388,7 @@ NActions=ق ٪ الإجراءات
NActionsLate=ق ٪ في وقت متأخر
RequestAlreadyDone=Request already recorded
Filter=فلتر
FilterOnInto=Search criteria '<strong>%s</strong>' into fields %s
RemoveFilter=إزالة فلتر
ChartGenerated=رسم ولدت
ChartNotGenerated=رسم لم تولد
@ -574,6 +579,7 @@ SendByMail=أرسل عن طريق البريد الالكتروني
MailSentBy=البريد الإلكتروني التي بعث بها
TextUsedInTheMessageBody=هيئة البريد الإلكتروني
SendAcknowledgementByMail=ارسال Ack. عن طريق البريد الإلكتروني
EMail=E-mail
NoEMail=أي بريد إلكتروني
NoMobilePhone=No mobile phone
Owner=مالك
@ -666,7 +672,7 @@ NewAttribute=جديد السمة
AttributeCode=السمة رمز
OptionalFieldsSetup=اضافية سمات الإعداد
URLPhoto=للتسجيل من الصورة / الشعار
SetLinkToThirdParty=ربط طرف ثالث آخر
SetLinkToAnotherThirdParty=Link to another third party
CreateDraft=خلق مشروع
SetToDraft=Back to draft
ClickToEdit=انقر للتحرير
@ -693,6 +699,7 @@ Deductible=Deductible
from=from
toward=toward
Access=Access
SelectAction=Select action
HelpCopyToClipboard=Use Ctrl+C to copy to clipboard
SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s")
OriginFileName=Original filename
@ -717,6 +724,9 @@ ViewList=List view
Mandatory=Mandatory
Hello=Hello
Sincerely=Sincerely
DeleteLine=Delete line
ConfirmDeleteLine=Are you sure you want to delete this line ?
# Week day
Monday=يوم الاثنين
Tuesday=الثلاثاء
@ -748,4 +758,24 @@ ShortSaturday=دإ
ShortSunday=دإ
SelectMailModel=Select email template
SetRef=Set ref
SearchIntoProject=Search %s into projects
Select2ResultFoundUseArrows=
Select2NotFound=No result found
Select2Enter=Enter
Select2MoreCharacters=or more characters
Select2LoadingMoreResults=Loading more results...
Select2SearchInProgress=Search in progress...
SearchIntoThirdparties=Thirdparties
SearchIntoContacts=Contacts
SearchIntoMembers=Members
SearchIntoUsers=Users
SearchIntoProductsOrServices=Products or services
SearchIntoProjects=Projects
SearchIntoCustomerInvoices=Customer invoices
SearchIntoSupplierInvoices=Supplier invoices
SearchIntoCustomerOrders=Customer orders
SearchIntoSupplierOrders=Supplier orders
SearchIntoCustomerProposals=Customer proposals
SearchIntoSupplierProposals=Supplier proposals
SearchIntoInterventions=Interventions
SearchIntoContracts=Contracts
SearchIntoExpenseReports=Expense reports

View File

@ -121,7 +121,6 @@ AttributeName=اسم السمة
String=سلسلة
Text=النص
Int=Int
Date=تاريخ
DateAndTime=التاريخ والوقت
PublicMemberCard=عضو بطاقة العامة
MemberNotOrNoMoreExpectedToSubscribe=أو ليست عضوا في أي أكثر من المتوقع للاكتتاب

View File

@ -0,0 +1,14 @@
# Dolibarr language file - Source file is en_US - oauth
ConfigOAuth=Oauth Configuration
NoAccessToken=No access token saved into local database
HasAccessToken=A token was generated and saved into local database
NewTokenStored=Token received ans saved
ToCheckDeleteTokenOnProvider=To check/delete authorization saved by %s OAuth provider
TokenDeleted=Token deleted
RequestAccess=Click here to request/renew access and receive a new token to save
DeleteAccess=Click here to delete token
UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credential on your OAuth provider:
ListOfSupportedOauthProviders=Enter here credential provided by your OAuth2 provider. Only supported OAuth2 providers are visible here. This setup may be used by other modules than need OAuth2 authentication.
OAUTH_GOOGLE_NAME=Api Google
OAUTH_GOOGLE_ID=Api Google Id
OAUTH_GOOGLE_SECRET=Api Google Secret

View File

@ -31,10 +31,12 @@ StatusOrderSentShort=في عملية
StatusOrderSent=Shipment in process
StatusOrderOnProcessShort=Ordered
StatusOrderProcessedShort=تجهيز
StatusOrderDelivered=Delivered
StatusOrderToBillShort=على مشروع قانون
StatusOrderToBill2Short=على مشروع قانون
StatusOrderApprovedShort=وافق
StatusOrderRefusedShort=رفض
StatusOrderBilledShort=Billed
StatusOrderToProcessShort=لعملية
StatusOrderReceivedPartiallyShort=تلقى جزئيا
StatusOrderReceivedAllShort=وتلقى كل شيء
@ -48,6 +50,7 @@ StatusOrderToBill=على مشروع قانون
StatusOrderToBill2=على مشروع قانون
StatusOrderApproved=وافق
StatusOrderRefused=رفض
StatusOrderBilled=Billed
StatusOrderReceivedPartially=تلقى جزئيا
StatusOrderReceivedAll=وتلقى كل شيء
ShippingExist=شحنة موجود
@ -61,7 +64,6 @@ SearchOrder=من أجل البحث
SearchACustomerOrder=Search a customer order
SearchASupplierOrder=Search a supplier order
ShipProduct=سفينة المنتج
Discount=الخصم
CreateOrder=خلق أمر
RefuseOrder=رفض النظام
ApproveOrder=Approve order
@ -70,6 +72,7 @@ ValidateOrder=من أجل التحقق من صحة
UnvalidateOrder=Unvalidate النظام
DeleteOrder=من أجل حذف
CancelOrder=من أجل إلغاء
OrderReopened= Order %s Reopened
AddOrder=Create order
AddToMyOrders=أضف إلى أوامر
AddToOtherOrders=إضافة إلى أوامر أخرى
@ -79,6 +82,8 @@ OrdersOpened=Orders to process
NoOpenedOrders=No open orders
NoOtherOpenedOrders=No other open orders
NoDraftOrders=No draft orders
NoOrder=No Order
NoSupplierOrder=No supplier order
OtherOrders=أوامر أخرى
LastOrders=Last %s customer orders
LastCustomerOrders=Last %s customer orders
@ -105,6 +110,7 @@ ClassifyShipped=Classify delivered
ClassifyBilled=تصنيف "فواتير"
ComptaCard=بطاقة المحاسبة
DraftOrders=مشروع أوامر
DraftSuppliersOrders=Draft suppliers orders
RelatedOrders=الأوامر ذات الصلة
RelatedCustomerOrders=Related customer orders
RelatedSupplierOrders=Related supplier orders

View File

@ -10,27 +10,26 @@ BirthdayAlertOn= عيد ميلاد النشطة في حالة تأهب
BirthdayAlertOff= عيد الميلاد فى حالة تأهب الخاملة
Notify_FICHINTER_VALIDATE=تدخل المصادق
Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail
Notify_BILL_VALIDATE=فاتورة مصادق
Notify_BILL_UNVALIDATE=Customer invoice unvalidated
Notify_ORDER_VALIDATE=التحقق من صحة النظام العميل
Notify_ORDER_SENTBYMAIL=النظام العميل ترسل عن طريق البريد
Notify_ORDER_SUPPLIER_SENTBYMAIL=النظام مزود ترسل عن طريق البريد
Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
Notify_ORDER_SUPPLIER_APPROVE=من أجل الموافقة على المورد
Notify_ORDER_SUPPLIER_REFUSE=من أجل رفض الموردين
Notify_ORDER_VALIDATE=التحقق من صحة النظام العميل
Notify_PROPAL_VALIDATE=التحقق من صحة اقتراح العملاء
Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed
Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused
Notify_PROPAL_SENTBYMAIL=اقتراح التجارية المرسلة عن طريق البريد
Notify_WITHDRAW_TRANSMIT=انتقال انسحاب
Notify_WITHDRAW_CREDIT=انسحاب الائتمان
Notify_WITHDRAW_EMIT=Isue انسحاب
Notify_ORDER_SENTBYMAIL=النظام العميل ترسل عن طريق البريد
Notify_COMPANY_CREATE=طرف ثالث خلق
Notify_COMPANY_SENTBYMAIL=Mails sent from third party card
Notify_PROPAL_SENTBYMAIL=اقتراح التجارية المرسلة عن طريق البريد
Notify_BILL_VALIDATE=فاتورة مصادق
Notify_BILL_UNVALIDATE=Customer invoice unvalidated
Notify_BILL_PAYED=دفعت فاتورة العميل
Notify_BILL_CANCEL=فاتورة الزبون إلغاء
Notify_BILL_SENTBYMAIL=فاتورة الزبون إرسالها عن طريق البريد
Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
Notify_ORDER_SUPPLIER_SENTBYMAIL=النظام مزود ترسل عن طريق البريد
Notify_BILL_SUPPLIER_VALIDATE=فاتورة المورد المصادق
Notify_BILL_SUPPLIER_PAYED=دفعت فاتورة المورد
Notify_BILL_SUPPLIER_SENTBYMAIL=فاتورة المورد ترسل عن طريق البريد
@ -58,13 +57,13 @@ Miscellaneous=متفرقات
NbOfActiveNotifications=Number of notifications (nb of recipient emails)
PredefinedMailTest=هذا هو الاختبار الإلكتروني. تكون مفصولة \\ nThe سطرين من قبل حرف إرجاع.
PredefinedMailTestHtml=هذا هو البريد <b>الاختبار</b> (الاختبار يجب أن تكون في كلمة جريئة). <br> وتفصل بين الخطين من قبل حرف إرجاع.
PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __REF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendSupplierProposal=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __REF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
@ -121,24 +120,23 @@ LengthUnitdm=مارك ألماني
LengthUnitcm=الطول
LengthUnitmm=مم
Surface=منطقة
SurfaceUnitm2=m2
SurfaceUnitdm2=dm2
SurfaceUnitcm2=cm2
SurfaceUnitmm2=mm2
SurfaceUnitfoot2=ft2
SurfaceUnitinch2=in2
SurfaceUnitm2=m²
SurfaceUnitdm2=dm²
SurfaceUnitcm2=cm²
SurfaceUnitmm2=mm²
SurfaceUnitfoot2=ft²
SurfaceUnitinch2=in²
Volume=حجم
TotalVolume=الحجم الإجمالي
VolumeUnitm3=m3
VolumeUnitdm3=dm3
VolumeUnitcm3=cm3
VolumeUnitmm3=mm3
VolumeUnitfoot3=ft3
VolumeUnitinch3=in3
VolumeUnitm3=m³
VolumeUnitdm3=dm³ (L)
VolumeUnitcm3=cm³ (ml)
VolumeUnitmm3=mm³ (µl)
VolumeUnitfoot3=ft³
VolumeUnitinch3=in³
VolumeUnitounce=أوقية
VolumeUnitlitre=لتر
VolumeUnitgallon=غالون
Size=حجم
SizeUnitm=م
SizeUnitdm=مارك ألماني
SizeUnitcm=سم

View File

@ -23,3 +23,9 @@ PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not)
ReturnURLAfterPayment=Return URL after payment
ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed
PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed
SetExpressCheckoutAPICallFailed=SetExpressCheckout API call failed.
DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPayment API call failed.
DetailedErrorMessage=Detailed Error Message
ShortErrorMessage=Short Error Message
ErrorCode=Error Code
ErrorSeverityCode=Error Severity Code

View File

@ -1,6 +1,9 @@
# Dolibarr language file - Source file is en_US - products
ProductRef=المرجع المنتج.
ProductLabel=وصف المنتج
ProductLabelTranslated=Translated product label
ProductDescriptionTranslated=Translated product description
ProductNoteTranslated=Translated product note
ProductServiceCard=منتجات / خدمات البطاقات
Products=المنتجات
Services=الخدمات
@ -64,12 +67,17 @@ ProductStatusNotOnBuy=عفا عليها الزمن
ProductStatusOnBuyShort=متاح
ProductStatusNotOnBuyShort=عفا عليها الزمن
UpdatePrice=آخر التطورات في الأسعار
UpdateVAT=Update vat
UpdateDefaultPrice=Update default price
UpdateLevelPrices=Update prices for each level
AppliedPricesFrom=تطبق الأسعار من
SellingPrice=سعر البيع
SellingPriceHT=سعر البيع (صافي الضرائب)
SellingPriceTTC=سعر البيع (شركة الضريبية)
PublicPrice=السعر العام
CurrentPrice=السعر الحالي
CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost.
CostPriceUsage=In a future version, this value could be used for margin calculation.
NewPrice=السعر الجديد
MinPrice=Min. selling price
MinPriceHT=Min. selling price (net of tax)
@ -98,9 +106,10 @@ AddToOtherProposals=إضافة إلى اقتراحات أخرى
AddToMyBills=أضف إلى الفواتير
AddToOtherBills=إضافة إلى غيرها من مشاريع القوانين
CorrectStock=تصحيح الأوراق المالية
AddPhoto=إضافة الصورة
ListOfStockMovements=قائمة الحركات الأسهم
BuyingPrice=سعر الشراء
PriceForEachProduct=Products with specific prices
NoPriceSpecificToCustomer=This customer has no specific prices. All standard prices for products/services will be used.
SupplierCard=بطاقة المورد
CommercialCard=بطاقة تجارية
AllWays=الطريق إلى إيجاد منتجك في الأسهم
@ -129,7 +138,6 @@ KeywordFilter=الكلمة الرئيسية فلتر
CategoryFilter=فئة فلتر
ProductToAddSearch=إضافة إلى البحث عن المنتج
AddDel=إضافة / حذف
Quantity=الكمية
NoMatchFound=العثور على أي مباراة
ProductAssociationList=List of products/services that are component of this virtual product/package
ProductParentList=List of package products/services with this product as a component
@ -182,6 +190,8 @@ ClonePricesProduct=استنساخ الرئيسية معلومات والأسعا
CloneCompositionProduct=Clone packaged product/service
ProductIsUsed=ويستخدم هذا المنتج
NewRefForClone=المرجع. من المنتجات الجديدة / خدمة
SellingPrices=Selling prices
BuyingPrices=Buying prices
CustomerPrices=Customer prices
SuppliersPrices=Supplier prices
SuppliersPricesOfProductsOrServices=Supplier prices (of products or services)
@ -228,6 +238,10 @@ PriceByQuantityRange=Quantity range
ProductsDashboard=Products/Services summary
UpdateOriginalProductLabel=Modify original label
HelpUpdateOriginalProductLabel=Allows to edit the name of the product
MultipriceRules=Price level rules
UseMultipriceRules=Use price level rules (defined into product module setup) to autocalculate prices of all other level according to first level
PercentVariationOver=%% variation over %s
PercentDiscountOver=%% discount over %s
### composition fabrication
Building=Production and items dispatchment
Build=Produce
@ -294,6 +308,7 @@ LastUpdated=Last updated
CorrectlyUpdated=Correctly updated
PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is
PropalMergePdfProductChooseFile=Select PDF files
IncludingProductWithTag=Including product with tag
IncludingProductWithTag=Including product/service with tag
DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer
WarningSelectOneDocument=Please select at least one document
DefaultUnitToShow=Units

View File

@ -99,7 +99,6 @@ ReOpenAProject=فتح مشروع
ConfirmReOpenAProject=هل أنت متأكد أنك تريد إعادة فتح هذا المشروع؟
ProjectContact=مشروع اتصالات
ActionsOnProject=الإجراءات على المشروع
OpenedProjects=Opened projects
YouAreNotContactOfProject=كنت لا اتصال لهذا المشروع الخاص
DeleteATimeSpent=قضى الوقت حذف
ConfirmDeleteATimeSpent=هل أنت متأكد أنك تريد حذف هذا الوقت الذي يقضيه؟
@ -175,9 +174,12 @@ ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of opportunities by mo
ProjectOpenedProjectByOppStatus=Opened project/lead by opportunity status
ProjectsStatistics=Statistics on projects/leads
TaskAssignedToEnterTime=Task assigned. Entering time on this task should be possible.
IdTaskTime=Id task time
YouCanCompleteRef=If you want to complete the ref with some information (to use it as search filters), it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-ABC. You may also prefer to add search keys into label.
OpenedProjectsByThirdparties=Opened projects by thirdparties
OpportunityTotalAmount=Opportunities total amount
OpportunityPonderatedAmount=Opportunities weighted amount
OpportunityPonderatedAmountDesc=Opportunities amount weighted with probability (depending on status of opportunity)
OppStatusPROSP=Prospection
OppStatusQUAL=Qualification
OppStatusPROPO=Proposal

View File

@ -53,6 +53,7 @@ ListOfProposals=قائمة مقترحات تجارية
ActionsOnPropal=الإجراءات على الاقتراح
NoOpenedPropals=No open commercial proposals
NoOtherOpenedPropals=No other open commercial proposals
NoPropal=No commercial proposal
RefProposal=اقتراح المرجع التجارية
SendPropalByMail=اقتراح ارسال التجارية عن طريق البريد
AssociatedDocuments=الوثائق المرتبطة الاقتراح :

View File

@ -0,0 +1,96 @@
# Dolibarr language file - Source file is en_US - receiptprinter
PrinterAdded=Printer %s added
PrinterUpdated=Printer %s updated
PrinterDeleted=Printer %s deleted
TestSentToPrinter=Test Sent To Printer %s
ReceiptPrinterDesc=Setup of printers
ReceiptPrinterTemplateDesc=Setup of Templates
ReceiptPrinterTypeDesc=Description of Receipt Printer's type
ReceiptPrinterProfileDesc=Description of Receipt Printer's Profile
ListPrinters=List of Printers
SetupReceiptTemplate=Template Setup
CONNECTOR_DUMMY=Dummy Printer
CONNECTOR_NETWORK_PRINT=Network Printer
CONNECTOR_FILE_PRINT=Local Printer
CONNECTOR_WINDOWS_PRINT=Local Windows Printer
CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing
CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100
CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1
CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer
PROFILE_DEFAULT=Default Profile
PROFILE_SIMPLE=Simple Profile
PROFILE_EPOSTEP=Epos Tep Profile
PROFILE_P822D=P822D Profile
PROFILE_STAR=Star Profile
PROFILE_DEFAULT_HELP=Default Profile suitable for Epson printers
PROFILE_SIMPLE_HELP=Simple Profile No Graphics
PROFILE_EPOSTEP_HELP=Epos Tep Profile Help
PROFILE_P822D_HELP=P822D Profile No Graphics
PROFILE_STAR_HELP=Star Profile
DOL_ALIGN_LEFT=Left align text
DOL_ALIGN_CENTER=Center text
DOL_ALIGN_RIGHT=Right align text
DOL_USE_FONT_A=Use font A of printer
DOL_USE_FONT_B=Use font B of printer
DOL_USE_FONT_C=Use font C of printer
DOL_BOLD=Text Bold
/DOL_BOLD=End of Text Bold
DOL_DOUBLE_HEIGHT=Text double height
/DOL_DOUBLE_HEIGHT=End of Text double height
DOL_DOUBLE_WIDTH=Text double width
/DOL_DOUBLE_WIDTH=End of Text double width
DOL_UNDERLINE=Underline text
/DOL_UNDERLINE=End of Underline text
DOL_UNDERLINE_2DOTS=Underline with double line
/DOL_UNDERLINE_2DOTS=End of Underline with double line
DOL_EMPHASIZED=Emphasized text
/DOL_EMPHASIZED=End of Emphasized text
DOL_SWITCH_COLORS=Print in white on black
/DOL_SWITCH_COLORS=End of Print in white on black
DOL_PRINT_BARCODE=Print barcode
DOL_PRINT_BARCODE_CUSTOMER_ID=Print barcode customer id
DOL_SET_PRINT_WIDTH_57=Ticket print width of 57mm
DOL_CUT_PAPER_FULL=Cut ticket completely
DOL_CUT_PAPER_PARTIAL=Cut ticket partially
DOL_OPEN_DRAWER=Open cash drawer
DOL_ACTIVATE_BUZZER=Activate buzzer
DOL_PRINT_QRCODE=Print QR Code
DOL_PRINT_DATE=Print date AAAA-MM-DD
DOL_PRINT_DATE_TIME=Print date and time AAAA-MM-DD HH:MM:SS
DOL_PRINT_YEAR=Print Year
DOL_PRINT_MONTH_LETTERS=Print month in letters (example : november)
DOL_PRINT_MONTH=Print month number
DOL_PRINT_DAY=Print day number
DOL_PRINT_DAY_LETTERS=Print day number
DOL_PRINT_TABLE=Print table number (for restaurant, bar...)
DOL_PRINT_CUTLERY=Print number of cutlery (for restaurant)
DOL_PRINT_PAYMENT=Print payment method
DOL_PRINT_LOGO=Print logo stored on printer. Example : 32|32
DOL_PRINT_LOGO_OLD=Print logo stored on printer. Must be followed by logo code. For old printers.
DOL_PRINT_ORDER_LINES=Print order lines
DOL_PRINT_ORDER_TAX=Print order total tax
DOL_PRINT_ORDER_LOCAL_TAX=Print order local tax
DOL_PRINT_ORDER_TOTAL=Print order total
DOL_PRINT_ORDER_NUMBER=Print order number
DOL_PRINT_ORDER_NUMBER_UNIQUE=Print order number after validation
DOL_PRINT_CUSTOMER_FIRSTNAME=Print customer firstname
DOL_PRINT_CUSTOMER_LASTNAME=Print customer name
DOL_PRINT_CUSTOMER_MAIL=Print customer mail
DOL_PRINT_CUSTOMER_PHONE=Print customer phone
DOL_PRINT_CUSTOMER_MOBILE=Print customer mobile
DOL_PRINT_CUSTOMER_SKYPE=Print customer skype
DOL_PRINT_CUSTOMER_TAX_NUMBER=Print customer VAT number
DOL_PRINT_CUSTOMER_ACCOUNT_BALANCE=Print customer account balance
DOL_PRINT_VENDOR_LASTNAME=Print vendor name
DOL_PRINT_VENDOR_FIRSTNAME=Print vendor firstname
DOL_PRINT_VENDOR_MAIL=Print vendor mail
DOL_PRINT_CUSTOMER_POINTS=Print customer points
DOL_PRINT_ORDER_POINTS=Print number of points for this order
DOL_PRINT_IF_CUSTOMER=Print the line IF a customer is affected to the order
DOL_PRINT_IF_VENDOR=Print the line IF a vendor is affected to the order
DOL_PRINT_IF_HAPPY_HOUR=Print the line IF Happy Hour
DOL_PRINT_IF_NUM_ORDER_UNIQUE=Print the line IF order is validated
DOL_PRINT_IF_CUSTOMER_POINTS=Print the line IF customer points > 0
DOL_PRINT_IF_ORDER_POINTS=Print the line IF points of the order > 0
DOL_PRINT_IF_CUSTOMER_TAX_NUMBER=Print the line IF customer has vat number
DOL_PRINT_IF_CUSTOMER_ACCOUNT_BALANCE_POSITIVE=Print the line IF customer balance > 0

View File

@ -1,4 +1,4 @@
# Dolibarr language file - Source file is en_US - resource
MenuResourceIndex=Resources
MenuResourceAdd=New resource
MenuResourcePlanning=Resource planning
@ -17,6 +17,7 @@ ResourceFormLabel_description=Resource description
ResourcesLinkedToElement=Resources linked to element
ShowResource=Show resource
ShowResourcePlanning=Show resource planning
GotoDate=Go to date

View File

@ -69,7 +69,7 @@ ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders
ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders
ProductQtyInShipmentAlreadySent=Product quantity from opened customer order already sent
ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received
NoProductToShipFoundIntoStock=No product to ship found into warehouse <b>%s</b>. Correct sotck or go back to choose another warehouse.
NoProductToShipFoundIntoStock=No product to ship found into warehouse <b>%s</b>. Correct stock or go back to choose another warehouse.
# Sending methods
SendingMethodCATCH=القبض على العملاء

View File

@ -0,0 +1,60 @@
# Dolibarr language file - Source file is en_US - supplier_proposal
SupplierProposal=Supplier commercial proposals
supplier_proposalDESC=Manage price requests to suppliers
supplier_proposalMENU_LEFT_TITLE=Supplier proposals
supplier_proposalMENU_LEFT_TITLE_NEW=New request
supplier_proposalMENU_LEFT_TITLE_LIST=List
CommRequest=Price request
CommRequests=Price requests
SearchRequest=Find a request
DraftRequests=Draft requests
LastModifiedRequests=Last %s modified price requests
RequestsOpened=Open price requests
SupplierProposalArea=Supplier proposals area
SupplierProposalShort=Supplier proposal
SupplierProposals=Supplier proposals
NewAskPrice=New price request
NewAsk=New request
ShowSupplierProposal=Show price request
AddSupplierProposal=Create a price request
SupplierProposalRefFourn=Supplier ref
SupplierProposalDate=Delivery date
SupplierProposalRefFournNotice=Before closing to "Accepted", think to grasp suppliers references.
RelatedSupplierProposal=Related price requests suppliers
ConfirmValidateAsk=Are you sure you want to validate this price request under name <b>%s</b> ?
DateAsk=Date of request
DeleteAsk=Delete request
ValidateAsk=Validate request
AddAsk=Create a request
SupplierProposalDraft=Drafts
SupplierProposalOpened=Open
SupplierProposalStatusDraft=Draft (needs to be validated)
SupplierProposalStatusValidated=Validated (request is open)
SupplierProposalStatusOpened=Validated (request is open)
SupplierProposalStatusClosed=Closed
SupplierProposalStatusSigned=Accepted
SupplierProposalStatusNotSigned=Refused
SupplierProposalStatusBilled=Billed
SupplierProposalStatusDraftShort=Draft
SupplierProposalStatusValidatedShort=Validated
SupplierProposalStatusOpenedShort=Open
SupplierProposalStatusClosedShort=Closed
SupplierProposalStatusSignedShort=Accepted
SupplierProposalStatusNotSignedShort=Refused
SupplierProposalStatusBilledShort=Billed
CopyAskFrom=Create price request by copying existing a request
CreateEmptyAsk=Create blank request
CloneAsk=Clone price request
ConfirmCloneAsk=Are you sure you want to clone the price request <b>%s</b> ?
ConfirmReOpenAsk=Are you sure you want to open back the price request <b>%s</b> ?
SendAskByMail=Send price request by mail
SendAskRef=Sending the price request %s
SupplierProposalCard=Request card
ConfirmDeleteAsk=Are you sure you want to delete this price request ?
ActionsOnSupplierProposal=Events on price request
DocModelAuroreDescription=A complete request model (logo...)
CommercialAsk=Price request
DefaultModelSupplierProposalCreate=Default model creation
DefaultModelSupplierProposalToBill=Default template when closing a price request (accepted)
DefaultModelSupplierProposalClosed=Default template when closing a price request (refused)
ListOfSupplierProposal=List of supplier proposal requests

View File

@ -28,8 +28,6 @@ AnyOtherInThisListCanValidate=Person to inform for validation.
TripSociete=Information company
TripSalarie=Informations user
TripNDF=Informations expense report
DeleteLine=Delete a line of the expense report
ConfirmDeleteLine=Are you sure you want to delete this line ?
PDFStandardExpenseReports=Standard template to generate a PDF document for expense report
ExpenseReportLine=Expense report line
TF_OTHER=أخرى
@ -53,8 +51,6 @@ AddLineMini=Add
Date_DEBUT=Period date start
Date_FIN=Period date end
ModePaiement=Payment mode
Note=Note
Project=Project
VALIDATOR=User responsible for approval
VALIDOR=Approved by

Some files were not shown because too many files have changed in this diff Show More