2
0
forked from Wavyzz/dolibarr

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

This commit is contained in:
aspangaro
2015-07-04 15:01:11 +02:00
1074 changed files with 10785 additions and 25785 deletions

View File

@@ -35,6 +35,7 @@ For developers:
- New: Function yn can show a visual checkbox.
- New: Introduced select2 jquery plugin.
- New: Possibility to add javascript in main login page with "getLoginPageOptions" hook
- New: possibility to defined a tab for all entities in module descriptor
WARNING: Following changes may create regression for some external modules, but was necessary to make
Dolibarr better:

View File

@@ -2,9 +2,9 @@
#------------------------------------------------------
# Script to push language files to Transifex
#
# Laurent Destailleur - eldy@users.sourceforge.net
# Laurent Destailleur (eldy) - eldy@users.sourceforge.net
#------------------------------------------------------
# Usage: txpush.sh (source|all|xx_XX) [-r dolibarr.file] [-f]
# Usage: txpush.sh (source|xx_XX) [-r dolibarr.file] [-f]
#------------------------------------------------------
# Syntax
@@ -13,7 +13,7 @@ then
echo "This push local files to transifex."
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|all|xx_XX) [-r dolibarr.file] [-f] [--no-interactive]"
echo "Usage: ./dev/translation/txpush.sh (source|xx_XX) [-r dolibarr.file] [-f] [--no-interactive]"
exit
fi
@@ -23,20 +23,15 @@ then
exit
fi
if [ "x$1" = "xall" ]
then
for fic in ar_SA bg_BG bs_BA ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE eu_ES fa_IR fi_FI fr_FR he_IL hr_HR hu_HU id_ID is_IS it_IT ja_JP ka_GE ko_KR lt_LT lv_LV mk_MK nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sq_AL sv_SE th_TH tr_TR uk_UA uz_UZ vi_VN zh_CN zh_TW
do
echo "tx push --skip -t -l $fic $2 $3"
tx push --skip -t -l $fic $2 $3
done
else
if [ "x$1" = "xsource" ]
then
echo "tx push -s $2 $3"
tx push -s $2 $3
else
echo "tx push --skip -t -l $1 $2 $3 $4"
tx push --skip -t -l $1 $2 $3 $4
fi
for file in `find htdocs/langs/$1/*.lang -type f`
do
export basefile=`basename $file | sed -s s/\.lang//g`
echo "tx push --skip -r dolibarr.$basfile -t -l $1 $2 $3 $4"
tx push --skip -r dolibarr.$basefile -t -l $1 $2 $3 $4
done
fi

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com>
* Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.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
@@ -154,7 +154,7 @@ if ($result) {
print_liste_field_titre($langs->trans("Accountparent"), $_SERVER["PHP_SELF"], "aa.account_parent", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Pcgtype"), $_SERVER["PHP_SELF"], "aa.pcg_type", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Pcgsubtype"), $_SERVER["PHP_SELF"], "aa.pcg_subtype", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Active"), $_SERVER["PHP_SELF"], "aa.active", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Activated"), $_SERVER["PHP_SELF"], "aa.active", "", $param, "", $sortfield, $sortorder);
print_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"",$param,"",'width="60" align="center"',$sortfield,$sortorder);
print '</tr>';
@@ -174,12 +174,17 @@ if ($result) {
$var = true;
$accountstatic=new AccountingAccount($db);
while ( $i < min($num, $limit) ) {
$obj = $db->fetch_object($resql);
$var = ! $var;
$accountstatic->id=$obj->rowid;
$accountstatic->label=$obj->label;
$accountstatic->account_number=$obj->account_number;
print '<tr ' . $bc[$var] . '>';
print '<td><a href="./card.php?id=' . $obj->rowid . '">' . $obj->account_number . '</td>';
print '<td>' . $accountstatic->getNomUrl(1) . '</td>';
print '<td>' . $obj->label . '</td>';
print '<td>' . $obj->account_parent . '</td>';
print '<td>' . $obj->pcg_type . '</td>';
@@ -210,6 +215,7 @@ if ($result) {
print '</td>' . "\n";
print "</tr>\n";
$var=!$var;
$i ++;
}

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com>
* Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com>
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
*
@@ -66,8 +66,7 @@ class AccountingAccount extends CommonObject
*/
function fetch($rowid = null, $account_number = null)
{
if ($rowid || $account_number)
{
if ($rowid || $account_number) {
$sql = "SELECT rowid, datec, tms, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, fk_user_author, fk_user_modif, active";
$sql.= " FROM " . MAIN_DB_PREFIX . "accountingaccount WHERE";
if ($rowid) {
@@ -78,12 +77,10 @@ class AccountingAccount extends CommonObject
dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
if ($result) {
$obj = $this->db->fetch_object($result);
if ($obj)
{
if ($obj) {
$this->id = $obj->rowid;
$this->rowid = $obj->rowid;
$this->datec = $obj->datec;
@@ -99,18 +96,13 @@ class AccountingAccount extends CommonObject
$this->active = $obj->active;
return $this->id;
}
else
{
} else {
return 0;
}
}
else
{
} else {
dol_print_error($this->db);
}
}
return -1;
}
@@ -344,6 +336,31 @@ class AccountingAccount extends CommonObject
}
}
/**
* Return clicable name (with picto eventually)
*
* @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto
* @return string Chaine avec URL
*/
function getNomUrl($withpicto=0)
{
global $langs;
$result='';
$link = '<a href="'.DOL_URL_ROOT.'/accountancy/admin/card.php?id='.$this->id.'">';
$linkend='</a>';
$picto='billr';
$label=$langs->trans("Show").': '.$this->account_number.' - '.$this->label;
if ($withpicto) $result.=($link.img_object($label,$picto).$linkend);
if ($withpicto && $withpicto != 2) $result.=' ';
if ($withpicto != 2) $result.=$link.$this->account_number.$linkend;
return $result;
}
/**
* Information on record
*

File diff suppressed because it is too large Load Diff

View File

@@ -34,10 +34,12 @@ require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
$langs->load("errors");
$langs->load("admin");
$langs->load("companies");
$langs->load("resource");
$action=GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
$confirm=GETPOST('confirm','alpha');
@@ -226,7 +228,7 @@ $tabfield[21]= "code,label";
$tabfield[22]= "code,label";
$tabfield[23]= "country_id,country,taux,accountancy_code_sell,accountancy_code_buy,note";
$tabfield[24]= "code,label";
$tabfield[25]= "label,type_template,private,position,topic,content";
$tabfield[25]= "label,type_template,position,topic,content";
$tabfield[26]= "code,label,short_label";
$tabfield[27]= "code,libelle";
$tabfield[28]= "code,label,delay,newByMonth,country_id,country";
@@ -258,7 +260,7 @@ $tabfieldvalue[21]= "code,label";
$tabfieldvalue[22]= "code,label";
$tabfieldvalue[23]= "country,taux,accountancy_code_sell,accountancy_code_buy,note";
$tabfieldvalue[24]= "code,label";
$tabfieldvalue[25]= "label,type_template,private,position,topic,content";
$tabfieldvalue[25]= "label,type_template,position,topic,content";
$tabfieldvalue[26]= "code,label,short_label";
$tabfieldvalue[27]= "code,libelle";
$tabfieldvalue[28]= "code,label,delay,newByMonth,country";
@@ -290,7 +292,7 @@ $tabfieldinsert[21]= "code,label";
$tabfieldinsert[22]= "code,label";
$tabfieldinsert[23]= "fk_pays,taux,accountancy_code_sell,accountancy_code_buy,note";
$tabfieldinsert[24]= "code,label";
$tabfieldinsert[25]= "label,type_template,private,position,topic,content";
$tabfieldinsert[25]= "label,type_template,position,topic,content";
$tabfieldinsert[26]= "code,label,short_label";
$tabfieldinsert[27]= "code,libelle";
$tabfieldinsert[28]= "code,label,delay,newByMonth,fk_country";
@@ -364,35 +366,35 @@ $tabcond[29]= ! empty($conf->projet->enabled);
// List of help for fields
$tabhelp=array();
$tabhelp[1] = array();
$tabhelp[2] = array();
$tabhelp[3] = array();
$tabhelp[4] = array();
$tabhelp[5] = array();
$tabhelp[6] = array();
$tabhelp[7] = array();
$tabhelp[8] = array();
$tabhelp[9] = array();
$tabhelp[10] = array();
$tabhelp[1] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[2] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[3] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[4] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[5] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[6] = array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"));
$tabhelp[7] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[8] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[9] = array('code'=>$langs->trans("EnterAnyCode"), 'unicode'=>$langs->trans("UnicodeCurrency"));
$tabhelp[10] = array('taux'=>$langs->trans("SellTaxRate"), 'recuperableonly'=>$langs->trans("RecuperableOnly"), 'localtax1_type'=>$langs->trans("LocalTaxDesc"), 'localtax2_type'=>$langs->trans("LocalTaxDesc"));
$tabhelp[11] = array();
$tabhelp[12] = array();
$tabhelp[13] = array();
$tabhelp[14] = array();
$tabhelp[15] = array();
$tabhelp[16] = array();
$tabhelp[17] = array();
$tabhelp[18] = array();
$tabhelp[19] = array();
$tabhelp[20] = array();
$tabhelp[21] = array();
$tabhelp[22] = array();
$tabhelp[12] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[13] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[14] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[15] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[16] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[17] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[18] = array('code'=>$langs->trans("EnterAnyCode"), 'tracking'=>$langs->trans("UrlTrackingDesc"));
$tabhelp[19] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[20] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[21] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[22] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[23] = array();
$tabhelp[24] = array();
$tabhelp[25] = array();
$tabhelp[26] = array();
$tabhelp[27] = array();
$tabhelp[28] = array();
$tabhelp[29] = array();
$tabhelp[24] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[25] = array('type_template'=>$langs->trans("TemplateForElement"),'private'=>$langs->trans("TemplateIsVisibleByOwnerOnly"), 'position'=>$langs->trans("PositionIntoComboList"));
$tabhelp[26] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[27] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[28] = array('delay'=>$langs->trans("MinimumNoticePeriod"), 'newByMonth'=>$langs->trans("NbAddedAutomatically"));
$tabhelp[29] = array('code'=>$langs->trans("EnterAnyCode"), 'percent'=>$langs->trans("OpportunityPercent"), 'position'=>$langs->trans("PositionIntoComboList"));
// List of check for fields (NOT USED YET)
$tabfieldcheck=array();
@@ -468,6 +470,24 @@ if ($id == 11)
'external' => $langs->trans('External')
);
}
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'),
'askpricesupplier_send' => $langs->trans('MailToSendSupplierRequestForQuotation'),
'order_supplier_send' => $langs->trans('MailToSendSupplierOrder'),
'invoice_supplier_send' => $langs->trans('MailToSendSupplierInvoice'),
'thirdparty' => $langs->trans('MailToThirdparty')
);
}
// Define localtax_typeList (used for dictionary "llx_c_tva")
$localtax_typeList = array();
@@ -814,7 +834,6 @@ if ($action == 'delete')
*/
if ($id)
{
// Complete requete recherche valeurs avec critere de tri
$sql=$tabsql[$id];
@@ -869,9 +888,9 @@ if ($id)
else $valuetoshow=$langs->trans("Amount");
$align='right';
}
if ($fieldlist[$field]=='localtax1_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 2",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax1_type') { $valuetoshow=$langs->trans("UseLocalTax")." 2"; $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax1') { $valuetoshow=$langs->trans("Rate")." 2";}
if ($fieldlist[$field]=='localtax2_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 3",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax2_type') { $valuetoshow=$langs->trans("UseLocalTax")." 3"; $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3";}
if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); }
if ($fieldlist[$field]=='lang') { $valuetoshow=$langs->trans("Language"); }
@@ -903,6 +922,7 @@ if ($id)
if ($fieldlist[$field]=='pcg_subtype') { $valuetoshow=$langs->trans("Pcg_subtype"); }
if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); }
if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); }
if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); }
if ($id == 2) // Special cas for state page
{
@@ -924,7 +944,7 @@ if ($id)
if ($id == 4) print '<td></td>';
print '<td colspan="4">';
print '<input type="hidden" name="id" value="'.$id.'">';
print '&nbsp;</td>';
print '</td>';
print '</tr>';
// Line to enter new values
@@ -946,29 +966,43 @@ if ($id)
$reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error=$hookmanager->error; $errors=$hookmanager->errors;
if ($id == 3)
if ($id == 3) unset($fieldlist[2]);
if (empty($reshook))
{
unset($fieldlist[2]);
if ($tabname[$id] == MAIN_DB_PREFIX.'c_email_templates' && $action == 'edit')
{
fieldList($fieldlist,$obj,$tabname[$id],'hide');
}
else
{
fieldList($fieldlist,$obj,$tabname[$id],'add');
}
}
if (empty($reshook)) fieldList($fieldlist,$obj);
if ($id == 4) print '<td></td>';
print '<td colspan="3" align="right"><input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'"></td>';
print '<td colspan="3" align="right">';
if ($tabname[$id] != MAIN_DB_PREFIX.'c_email_templates' || $action != 'edit')
{
print '<input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'">';
}
print '</td>';
print "</tr>";
$colspan=count($fieldlist)+2;
if ($id == 4) $colspan++;
if (! empty($alabelisused)) // Si un des champs est un libelle
if (! empty($alabelisused) && $id != 25) // If there is one label among fields, we show legend of *
{
print '<tr><td colspan="'.$colspan.'">* '.$langs->trans("LabelUsedByDefault").'.</td></tr>';
}
print '<tr><td colspan="'.$colspan.'">&nbsp;</td></tr>';
print '<tr><td colspan="'.$colspan.'">&nbsp;</td></tr>'; // Keep &nbsp; to have a line with enough height
}
print '</form>';
// List of available values in database
dol_syslog("htdocs/admin/dict", LOG_DEBUG);
$resql=$db->query($sql);
@@ -983,7 +1017,7 @@ if ($id)
if ($num > $listlimit)
{
print '<tr class="none"><td align="right" colspan="'.(3+count($fieldlist)).'">';
print_fleche_navigation($page,$_SERVER["PHP_SELF"],'&id='.$id,($num > $listlimit),$langs->trans("Page").' '.($page+1));
print_fleche_navigation($page, $_SERVER["PHP_SELF"], '&id='.$id, ($num > $listlimit), '<li class="pagination"><span>'.$langs->trans("Page").' '.($page+1).'</span></li>');
print '</td></tr>';
}
@@ -1013,9 +1047,9 @@ if ($id)
else $valuetoshow=$langs->trans("Amount");
$align='right';
}
if ($fieldlist[$field]=='localtax1_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 2",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax1_type') { $valuetoshow=$langs->trans("UseLocalTax")." 2"; $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax1') { $valuetoshow=$langs->trans("Rate")." 2"; $sortable=0; }
if ($fieldlist[$field]=='localtax2_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 3",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax2_type') { $valuetoshow=$langs->trans("UseLocalTax")." 3"; $align="center"; $sortable=0; }
if ($fieldlist[$field]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3"; $sortable=0; }
if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); }
if ($fieldlist[$field]=='lang') { $valuetoshow=$langs->trans("Language"); }
@@ -1041,6 +1075,7 @@ if ($id)
if ($fieldlist[$field]=='pcg_subtype') { $valuetoshow=$langs->trans("Pcg_subtype"); }
if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); }
if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); }
if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); }
// Affiche nom du champ
if ($showfield)
@@ -1076,7 +1111,7 @@ if ($id)
$reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks
$error=$hookmanager->error; $errors=$hookmanager->errors;
if (empty($reshook)) fieldList($fieldlist,$obj,$tabname[$id]);
if (empty($reshook)) fieldList($fieldlist,$obj,$tabname[$id],'edit');
print '<td colspan="3" align="right"><a name="'.(! empty($obj->rowid)?$obj->rowid:$obj->code).'">&nbsp;</a><input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
print '&nbsp;<input type="submit" class="button" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>';
@@ -1096,6 +1131,10 @@ if ($id)
$showfield=1;
$align="left";
$valuetoshow=$obj->$fieldlist[$field];
if ($value == 'type_template')
{
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
}
if ($value == 'element')
{
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
@@ -1392,21 +1431,24 @@ $db->close();
* @param array $fieldlist Array of fields
* @param Object $obj If we show a particular record, obj is filled with record fields
* @param string $tabname Name of SQL table
* @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered
* @return void
*/
function fieldList($fieldlist,$obj='',$tabname='')
function fieldList($fieldlist, $obj='', $tabname='', $context='')
{
global $conf,$langs,$db;
global $form;
global $region_id;
global $elementList,$sourceList,$localtax_typeList;
global $bc;
$formadmin = new FormAdmin($db);
$formcompany = new FormCompany($db);
foreach ($fieldlist as $field => $value)
{
if ($fieldlist[$field] == 'country') {
if ($fieldlist[$field] == 'country')
{
if (in_array('region_id',$fieldlist))
{
print '<td>';
@@ -1419,7 +1461,8 @@ function fieldList($fieldlist,$obj='',$tabname='')
print $form->select_country((! empty($obj->country_code)?$obj->country_code:(! empty($obj->country)?$obj->country:'')), $fieldname, '', 28);
print '</td>';
}
elseif ($fieldlist[$field] == 'country_id') {
elseif ($fieldlist[$field] == 'country_id')
{
if (! in_array('country',$fieldlist)) // If there is already a field country, we don't show country_id (avoid duplicate)
{
$country_id = (! empty($obj->$fieldlist[$field]) ? $obj->$fieldlist[$field] : 0);
@@ -1428,22 +1471,32 @@ function fieldList($fieldlist,$obj='',$tabname='')
print '</td>';
}
}
elseif ($fieldlist[$field] == 'region') {
elseif ($fieldlist[$field] == 'region')
{
print '<td>';
$formcompany->select_region($region_id,'region');
print '</td>';
}
elseif ($fieldlist[$field] == 'region_id') {
elseif ($fieldlist[$field] == 'region_id')
{
$region_id = (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:0);
print '<td>';
print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$region_id.'">';
print '</td>';
}
elseif ($fieldlist[$field] == 'lang') {
elseif ($fieldlist[$field] == 'lang')
{
print '<td>';
print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT,'lang');
print '</td>';
}
// Le type de template
elseif ($fieldlist[$field] == 'type_template')
{
print '<td>';
print $form->selectarray('type_template', $elementList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''));
print '</td>';
}
// Le type de l'element (pour les type de contact)
elseif ($fieldlist[$field] == 'element')
{
@@ -1476,9 +1529,25 @@ function fieldList($fieldlist,$obj='',$tabname='')
print '<input type="text" class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="3" name="'.$fieldlist[$field].'">';
print '</td>';
}
elseif (in_array($fieldlist[$field], array('libelle_facture','content'))) {
elseif (in_array($fieldlist[$field], array('libelle_facture'))) {
print '<td><textarea cols="30" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea></td>';
}
elseif (in_array($fieldlist[$field], array('content')))
{
if ($tabname == MAIN_DB_PREFIX.'c_email_templates')
{
print '<td colspan="4"></td></tr><tr class="pair nohover"><td colspan="5">'; // To create an artificial CR for the current tr we are on
}
else print '<td>';
if ($context != 'hide')
{
//print '<textarea cols="3" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea>';
$doleditor = new DolEditor($fieldlist[$field], (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''), '', 140, 'dolibarr_mailings', 'In', 0, false, true, ROWS_5, '90%');
print $doleditor->Create(1);
}
else print '&nbsp;';
print '</td>';
}
elseif ($fieldlist[$field] == 'price' || preg_match('/^amount/i',$fieldlist[$field])) {
print '<td><input type="text" class="flat" value="'.price((! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')).'" size="8" name="'.$fieldlist[$field].'"></td>';
}
@@ -1507,6 +1576,8 @@ function fieldList($fieldlist,$obj='',$tabname='')
{
print '<td>';
$size='';
if ($fieldlist[$field]=='code') $size='size="8" ';
if ($fieldlist[$field]=='position') $size='size="4" ';
if ($fieldlist[$field]=='libelle') $size='size="32" ';
if ($fieldlist[$field]=='tracking') $size='size="92" ';
if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';

View File

@@ -1768,8 +1768,11 @@ if ($action == 'create')
$file = $fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans('SendAskByMail'));
print_fiche_titre($langs->trans('SendAskByMail'));
dol_fiche_head('');
// Create form object
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
@@ -1816,7 +1819,7 @@ if ($action == 'create')
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
}

View File

@@ -131,7 +131,7 @@ if ($resql)
}
if ($conf->use_javascript_ajax)
{
print '<tr><td align="center" colspan="2">';
print '<tr '.$bc[false].'><td align="center" colspan="2">';
$data=array('series'=>$dataseries);
dol_print_graph('stats',300,180,$data,1,'pie',1);
print '</td></tr>';

View File

@@ -992,6 +992,9 @@ else
// Print mail content
print_fiche_titre($langs->trans("EMail"),'','');
dol_fiche_head('');
print '<table class="border" width="100%">';
// Subject
@@ -1042,7 +1045,8 @@ else
print '</tr>';
print '</table>';
print "<br>";
dol_fiche_end();
}
else
{

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@uers.sourceforge.net>
* Copyright (C) 2005-2015 Laurent Destailleur <eldy@uers.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
*
@@ -408,20 +408,17 @@ if ($object->fetch($id) >= 0)
print_liste_field_titre($langs->trans("Firstname"),$_SERVER["PHP_SELF"],"mc.firstname",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("OtherInformations"),$_SERVER["PHP_SELF"],"",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Source"),$_SERVER["PHP_SELF"],"",$param,"",'align="center"',$sortfield,$sortorder);
// Date sending
if ($object->statut < 2)
{
print '<td class="liste_titre">&nbsp;</td>';
print_liste_field_titre('');
}
else
{
print_liste_field_titre($langs->trans("DateSending"),$_SERVER["PHP_SELF"],"mc.date_envoi",$param,'','align="center"',$sortfield,$sortorder);
}
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"mc.statut",$param,'','align="right"',$sortfield,$sortorder);
print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch ');
print '</tr>';
// Ligne des champs de filtres
@@ -458,7 +455,6 @@ if ($object->fetch($id) >= 0)
//Search Icon
print '<td class="liste_titre" align="right">';
print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
print '&nbsp; ';
print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Reset"),'searchclear.png','','',1).'" name="button_removefilter" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
print '</td>';
print '</tr>';
@@ -518,9 +514,6 @@ if ($object->fetch($id) >= 0)
{
print '<td align="center">&nbsp;</td>';
print '<td align="right" class="nowrap">'.$langs->trans("MailingStatusNotSent");
if ($user->rights->mailing->creer && $allowaddtarget) {
print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete&rowid='.$obj->rowid.$param.'">'.img_delete($langs->trans("RemoveRecipient"));
}
print '</td>';
}
else
@@ -532,7 +525,14 @@ if ($object->fetch($id) >= 0)
}
//Sreach Icon
print '<td></td>';
print '<td align="right">';
if ($obj->statut == 0)
{
if ($user->rights->mailing->creer && $allowaddtarget) {
print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete&rowid='.$obj->rowid.$param.'">'.img_delete($langs->trans("RemoveRecipient"));
}
}
print '</td>';
print '</tr>';
$i++;
@@ -540,7 +540,7 @@ if ($object->fetch($id) >= 0)
}
else
{
print '<tr '.$bc[false].'><td colspan="7">'.$langs->trans("NoTargetYet").'</td></tr>';
print '<tr '.$bc[false].'><td colspan="8">'.$langs->trans("NoTargetYet").'</td></tr>';
}
print "</table><br>";

View File

@@ -2288,6 +2288,9 @@ if ($action == 'create')
}
print "<br>\n";
//Select mail models is same action as presend
if (GETPOST('modelselected')) $action = 'presend';
if ($action != 'presend')
{
print '<div class="fichecenter"><div class="fichehalfleft">';
@@ -2330,10 +2333,6 @@ if ($action == 'create')
/*
* Action presend
*/
//Select mail models is same action as presend
if (GETPOST('modelselected')) {
$action = 'presend';
}
if ($action == 'presend')
{
$object->fetch_projet();
@@ -2369,8 +2368,11 @@ if ($action == 'create')
$file = $fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans('SendPropalByMail'));
print_fiche_titre($langs->trans('SendPropalByMail'));
dol_fiche_head('');
// Create form object
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
@@ -2439,7 +2441,7 @@ if ($action == 'create')
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
}

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
@@ -272,7 +272,7 @@ if ($result)
$langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
$moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
$moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
@@ -280,7 +280,7 @@ if ($result)
{
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
$moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
$moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'

View File

@@ -32,6 +32,7 @@
* \ingroup commande
* \brief Page to show customer order
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formorder.class.php';
@@ -2362,8 +2363,11 @@ if ($action == 'create' && $user->rights->commande->creer)
$file = $fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans('SendOrderByMail'));
print_fiche_titre($langs->trans('SendOrderByMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
@@ -2402,8 +2406,10 @@ if ($action == 'create' && $user->rights->commande->creer)
$contactarr = array();
$contactarr = $object->liste_contact(- 1, 'external');
if (is_array($contactarr) && count($contactarr) > 0) {
foreach ($contactarr as $contact) {
if (is_array($contactarr) && count($contactarr) > 0)
{
foreach ($contactarr as $contact)
{
if ($contact['libelle'] == $langs->trans('TypeContact_commande_external_CUSTOMER')) { // TODO Use code and not label
$contactstatic = new Contact($db);
$contactstatic->fetch($contact ['id']);
@@ -2432,7 +2438,7 @@ if ($action == 'create' && $user->rights->commande->creer)
// Show form
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
}
}

View File

@@ -46,6 +46,7 @@ $orderyear=GETPOST("orderyear","int");
$ordermonth=GETPOST("ordermonth","int");
$deliveryyear=GETPOST("deliveryyear","int");
$deliverymonth=GETPOST("deliverymonth","int");
$search_product_category=GETPOST('search_product_category','int');
$search_ref=GETPOST('search_ref','alpha')!=''?GETPOST('search_ref','alpha'):GETPOST('sref','alpha');
$search_ref_customer=GETPOST('search_ref_customer','alpha');
$search_company=GETPOST('search_company','alpha');
@@ -79,6 +80,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$search_categ='';
$search_user='';
$search_sale='';
$search_product_category='';
$search_ref='';
$search_ref_customer='';
$search_company='';
@@ -115,10 +117,14 @@ $companystatic = new Societe($db);
$help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
llxHeader('',$langs->trans("Orders"),$help_url);
$sql = 'SELECT s.nom as name, s.rowid as socid, s.client, s.code_client, c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,';
$sql = 'SELECT';
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
$sql.= ' s.nom as name, s.rowid as socid, s.client, s.code_client, c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,';
$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as facturee';
$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s';
$sql.= ', '.MAIN_DB_PREFIX.'commande as c';
if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet as pd ON c.rowid=pd.fk_commande';
if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product';
// We'll need this table joined to the select in order to filter by sale
if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if ($search_user > 0)
@@ -128,7 +134,8 @@ if ($search_user > 0)
}
$sql.= ' WHERE c.fk_soc = s.rowid';
$sql.= ' AND c.entity IN ('.getEntity('commande', 1).')';
if ($socid) $sql.= ' AND s.rowid = '.$socid;
if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category;
if ($socid > 0) $sql.= ' AND s.rowid = '.$socid;
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($search_ref) $sql .= natural_search('c.ref', $search_ref);
if ($sall) $sql .= natural_search(array('c.ref', 'c.note_private'), $sall);
@@ -260,15 +267,28 @@ if ($resql)
if ($user->rights->societe->client->voir || $socid)
{
$langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
$moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
$moreforfilter.=' &nbsp; &nbsp; &nbsp; ';
$moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
if ($user->rights->societe->client->voir || $socid)
{
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
$moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
$moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
if ($conf->categorie->enabled && $user->rights->produit->lire)
{
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('IncludingProductWithTag'). ': ';
$cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1);
$moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1);
$moreforfilter.='</div>';
}
if (! empty($moreforfilter))
{
@@ -311,7 +331,10 @@ if ($resql)
print '<td class="liste_titre" align="right">';
print '<input class="flat" type="text" size="6" name="search_total_ht" value="'.$search_total_ht.'">';
print '</td>';
print '<td></td>';
print '<td align="right">';
$liststatus=array('0'=>$langs->trans("StatusOrderDraftShort"), '1'=>$langs->trans("StatusOrderValidated"), '2'=>$langs->trans("StatusOrderSentShort"), '3'=>$langs->trans("StatusOrderToBill"), '4'=>$langs->trans("StatusOrderProcessed"), '-1'=>$langs->trans("StatusOrderCanceledShort"));
print $form->selectarray('viewstatut', $liststatus, $viewstatut, 1);
print '</td>';
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" 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")).'">';
print "</td></tr>\n";

View File

@@ -374,43 +374,34 @@ if ($id > 0 || ! empty($ref))
* Boutons actions
*/
if ($action != 'delete')
{
if ($action != 'delete') {
print '<div class="tabsAction">';
if ($object->type != 2 && $object->rappro) // If not cash account and can be reconciliate
{
if ($user->rights->banque->consolidate)
{
if ($object->type != 2 && $object->rappro) { // If not cash account and can be reconciliate
if ($user->rights->banque->consolidate) {
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&amp;vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>';
}
else
{
} else {
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>';
}
}
if ($action != 'addline')
{
if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT))
{
if ($user->rights->banque->modifier)
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=addline&amp;id='.$object->id.'&amp;page='.$page.($vline?'&amp;vline='.$vline:'').'">'.$langs->trans("AddBankRecord").'</a>';
}
else
{
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("AddBankRecord").'</a>';
}
}
else
{
print '<a class="butActionRefused" title="'.$langs->trans("FeatureDisabled").'" href="#">'.$langs->trans("AddBankRecord").'</a>';
}
}
print '</div>';
}
if ($action != 'addline') {
if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) {
if (empty($conf->accounting->enabled)) {
if ($user->rights->banque->modifier) {
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=addline&amp;id='.$object->id.'&amp;page='.$page.($vline?'&amp;vline='.$vline:'').'">'.$langs->trans("AddBankRecord").'</a>';
} else {
print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("AddBankRecord").'</a>';
}
} else {
print '<a class="butActionRefused" title="'.$langs->trans("FeatureDisabled").'" href="#">'.$langs->trans("AddBankRecord").'</a>';
}
} else {
print '<a class="butActionRefused" title="'.$langs->trans("FeatureDisabled").'" href="#">'.$langs->trans("AddBankRecord").'</a>';
}
}
print '</div>';
}
print '<br>';
@@ -466,15 +457,12 @@ if ($id > 0 || ! empty($ref))
print '<div class="floatright">'.$navig.'</div>';
}
print '<table class="noborder" width="100%">';
// Form to add a transaction with no invoice
if ($user->rights->banque->modifier && $action == 'addline')
{
print '<tr>';
print '<td align="left" colspan="10"><b>'.$langs->trans("AddBankRecordLong").'</b></td>';
print '</tr>';
print_fiche_titre($langs->trans("AddBankRecordLong"),'','');
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Date").'</td>';
print '<td>&nbsp;</td>';
@@ -507,11 +495,13 @@ if ($id > 0 || ! empty($ref))
print '<input type="submit" name="save" class="button" value="'.$langs->trans("Add").'"><br>';
print '<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'">';
print '</td></tr>';
print "</form>";
print '<tr class="noborder"><td colspan="10">&nbsp;</td></tr>'."\n";
print '</table>';
print '</form>';
print '<br>';
}
print '<table class="noborder" width="100%">';
/*
* Affiche tableau des transactions bancaires
*/

View File

@@ -2502,8 +2502,8 @@ if ($action == 'create')
}
print '<br>';
}
else if ($id > 0 || ! empty($ref))
}
else if ($id > 0 || ! empty($ref))
{
/*
* Show object in view mode
@@ -2860,7 +2860,7 @@ else if ($id > 0 || ! empty($ref))
$outstandingBills = $soc->get_OutstandingBill();
print ' - ' . $langs->trans('CurrentOutstandingBill') . ': ';
print price($outstandingBills, '', $langs, 0, 0, - 1, $conf->currency);
if ($soc->outstanding_limit != '')
if ($soc->outstanding_limit != '')
{
if ($outstandingBills > $soc->outstanding_limit)
print img_warning($langs->trans("OutstandingBillReached"));
@@ -2950,7 +2950,7 @@ else if ($id > 0 || ! empty($ref))
} else
print '. ';
}
if ($absolute_creditnote > 0)
if ($absolute_creditnote > 0)
{
// If validated, we show link "add credit note to payment"
if ($object->statut != 1 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) {
@@ -3855,8 +3855,9 @@ else if ($id > 0 || ! empty($ref))
$file = $fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans($titreform));
print_fiche_titre($langs->trans($titreform));
// Cree l'objet formulaire mail
dol_fiche_head();

View File

@@ -2721,7 +2721,10 @@ class Facture extends CommonInvoice
$dir = dol_buildpath($reldir."core/modules/facture/");
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
if (is_file($dir.$file) && is_readable($dir.$file))
{
$mybool |= include_once $dir . $file;
}
}
// For compatibility
@@ -2734,8 +2737,11 @@ class Facture extends CommonInvoice
foreach ($conf->file->dol_document_root as $dirroot)
{
$dir = $dirroot."/core/modules/facture/";
// Load file with numbering class (if found)
$mybool|=@include_once $dir.$file;
if (is_file($dir.$file) && is_readable($dir.$file)) {
$mybool |= include_once $dir . $file;
}
}
}

View File

@@ -63,6 +63,7 @@ $action=GETPOST('action','alpha');
$confirm=GETPOST('confirm','alpha');
$lineid=GETPOST('lineid','int');
$userid=GETPOST('userid','int');
$search_product_category=GETPOST('search_product_category','int');
$search_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','alpha');
$search_refcustomer=GETPOST('search_refcustomer','alpha');
$search_societe=GETPOST('search_societe','alpha');
@@ -121,6 +122,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$search_categ='';
$search_user='';
$search_sale='';
$search_product_category='';
$search_ref='';
$search_refcustomer='';
$search_societe='';
@@ -144,8 +146,8 @@ $formfile = new FormFile($db);
$bankaccountstatic=new Account($db);
$facturestatic=new Facture($db);
if (! $sall) $sql = 'SELECT';
else $sql = 'SELECT DISTINCT';
$sql = 'SELECT';
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.increment, f.total as total_ht, f.tva as total_tva, f.total_ttc,';
$sql.= ' f.datef as df, f.date_lim_reglement as datelimite,';
$sql.= ' f.paye as paye, f.fk_statut,';
@@ -155,6 +157,8 @@ $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s';
$sql.= ', '.MAIN_DB_PREFIX.'facture as f';
if (! $sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
else $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as fd ON fd.fk_facture = f.rowid';
if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as pd ON f.rowid=pd.fk_facture';
if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product';
// We'll need this table joined to the select in order to filter by sale
if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if ($search_user > 0)
@@ -165,7 +169,8 @@ if ($search_user > 0)
$sql.= ' WHERE f.fk_soc = s.rowid';
$sql.= " AND f.entity = ".$conf->entity;
if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($socid) $sql.= ' AND s.rowid = '.$socid;
if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category;
if ($socid > 0) $sql.= ' AND s.rowid = '.$socid;
if ($userid)
{
if ($userid == -1) $sql.=' AND f.fk_user_author IS NULL';
@@ -275,16 +280,30 @@ if ($resql)
if ($user->rights->societe->client->voir || $socid)
{
$langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
$moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
$moreforfilter.=' &nbsp; &nbsp; &nbsp; ';
$moreforfilter.=$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, 1, 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
if ($user->rights->societe->client->voir || $socid)
{
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
$moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
$moreforfilter.=$form->select_dolusers($search_user, 'search_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
$moreforfilter.='</div>';
}
// If the user can view prospects other than his'
if ($conf->categorie->enabled && $user->rights->produit->lire)
{
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('IncludingProductWithTag'). ': ';
$cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1);
$moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1);
$moreforfilter.='</div>';
}
if ($moreforfilter)
{
print '<tr class="liste_titre">';
@@ -330,7 +349,10 @@ if ($resql)
print '<td class="liste_titre"></td>';
print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ttc" value="'.$search_montant_ttc.'"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>';
print '<td class="liste_titre" align="right">';
$liststatus=array('0'=>$langs->trans("Draft"), '1'=>$langs->trans("Unpaid"), '2'=>$langs->trans("Paid"), '3'=>$langs->trans("Cancel"));
print $form->selectarray('search_status', $liststatus, $search_status, 1);
print '</td>';
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" 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")).'">';
print "</td></tr>\n";

View File

@@ -203,7 +203,7 @@ if (! empty($conf->deplacement->enabled) && $user->rights->deplacement->lire)
if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire)
{
$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, x.rowid, x.date_debut as date, x.tms as dm, x.total_ttc, x.fk_statut as status";
$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, x.rowid, x.ref, x.date_debut as date, x.tms as dm, x.total_ttc, x.fk_statut as status";
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as x, ".MAIN_DB_PREFIX."user as u";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE u.rowid = x.fk_user_author";
@@ -238,8 +238,8 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire
while ($i < $num && $i < $max)
{
$obj = $db->fetch_object($result);
$expensereportstatic->ref=$obj->rowid;
$expensereportstatic->id=$obj->rowid;
$expensereportstatic->ref=$obj->ref;
$userstatic->id=$obj->uid;
$userstatic->lastname=$obj->lastname;
$userstatic->firstname=$obj->firstname;

View File

@@ -221,7 +221,26 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->banque->c
}
else
{
setEventMessage($paiement->error, 'errors');
setEventMessage($object->error, 'errors');
}
}
if ($action == 'confirm_reject_check' && $confirm == 'yes' && $user->rights->banque->cheque)
{
$reject_date = dol_mktime(0, 0, 0, GETPOST('rejectdate_month'), GETPOST('rejectdate_day'), GETPOST('rejectdate_year'));
$rejected_check = GETPOST('bankid');
$object->fetch($id);
$paiement_id = $object->reject_check($rejected_check, $reject_date);
if ($paiement_id > 0)
{
setEventMessage($langs->trans("CheckRejectedAndInvoicesReopened"));
header("Location: ".DOL_URL_ROOT.'/compta/paiement/card.php?id='.$paiement_id);
exit;
}
else
{
setEventMessage($object->error, 'errors');
}
}
@@ -334,6 +353,18 @@ else
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans("ValidateCheckReceipt"), $langs->trans("ConfirmValidateCheckReceipt"), 'confirm_valide','','',1);
}
/*
* Confirm check rejection
*/
if ($action == 'reject_check')
{
$formquestion = array(
array('type' => 'hidden','name' => 'bankid','value' => GETPOST('lineid')),
array('type' => 'date','name' => 'rejectdate_','label' => $langs->trans("RejectCheckDate"),'value' => dol_now())
);
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans("RejectCheck"), $langs->trans("ConfirmRejectCheck"), 'confirm_reject_check',$formquestion,'',1);
}
}
$accounts = array();
@@ -350,7 +381,7 @@ if ($action == 'new')
print '<input type="hidden" name="action" value="new">';
dol_fiche_head();
print '<table class="border" width="100%">';
//print '<tr><td width="30%">'.$langs->trans('Date').'</td><td width="70%">'.dol_print_date($now,'day').'</td></tr>';
// Filter
@@ -361,9 +392,9 @@ if ($action == 'new')
$form->select_comptes($filteraccountid,'accountid',0,'courant <> 2',1);
print '</td></tr>';
print '</table>';
dol_fiche_end();
print '<div class="center">';
print '<input type="submit" class="button" name="filter" value="'.dol_escape_htmltag($langs->trans("ToFilter")).'">';
if ($filterdate || $filteraccountid > 0)
@@ -377,10 +408,9 @@ if ($action == 'new')
$sql = "SELECT ba.rowid as bid, b.datec as datec, b.dateo as date, b.rowid as chqid, ";
$sql.= " b.amount, ba.label, b.emetteur, b.num_chq, b.banque";
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b,";
$sql.= " ".MAIN_DB_PREFIX."bank_account as ba";
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON (b.fk_account = ba.rowid)";
$sql.= " WHERE b.fk_type = 'CHQ'";
$sql.= " AND b.fk_account = ba.rowid";
$sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")";
$sql.= " AND b.fk_bordereau = 0";
$sql.= " AND b.amount > 0";
@@ -599,12 +629,11 @@ else
// Liste des cheques
$sql = "SELECT b.rowid, b.amount, b.num_chq, b.emetteur,";
$sql.= " b.dateo as date, b.datec as datec, b.banque,";
$sql.= " p.rowid as pid, ba.rowid as bid";
$sql.= " p.rowid as pid, ba.rowid as bid, p.statut";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_account as ba";
$sql.= ", ".MAIN_DB_PREFIX."bank as b";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON (b.fk_account = ba.rowid)";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
$sql.= " WHERE ba.rowid = b.fk_account";
$sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")";
$sql.= " WHERE ba.entity IN (".getEntity('bank_account', 1).")";
$sql.= " AND b.fk_type= 'CHQ'";
$sql.= " AND b.fk_bordereau = ".$object->id;
$sql.= " ORDER BY $sortfield $sortorder";
@@ -625,7 +654,8 @@ else
print_liste_field_titre($langs->trans("Bank"),$_SERVER["PHP_SELF"],"b.banque", "",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"b.amount", "",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("LineRecord"),$_SERVER["PHP_SELF"],"b.rowid", "",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre('');
print_liste_field_titre($langs->trans("Payment"),$_SERVER["PHP_SELF"],"p.rowid", "",$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch ');
print "</tr>\n";
$i=1;
$var=false;
@@ -654,13 +684,25 @@ else
print '&nbsp;';
}
print '</td>';
if ($object->statut == 0)
print '<td align="center">';
$paymentstatic->id=$objp->pid;
$paymentstatic->ref=$objp->pid;
if ($paymentstatic->id)
{
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=remove&amp;lineid='.$objp->rowid.'">'.img_delete().'</a></td>';
print $paymentstatic->getNomUrl(1);
}
else
{
print '<td>&nbsp;</td>';
print '&nbsp;';
}
print '</td>';
if ($object->statut == 0)
{
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=remove&amp;lineid='.$objp->rowid.'">'.img_delete().'</a>';
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=reject_check&amp;lineid='.$objp->rowid.'">'.img_picto($langs->trans("RejectCheck"),'disable').'</a></td>';
}
else if($objp->statut == 2) {
print '<td align="right">'.img_picto($langs->trans('CheckRejected'),'statut8').'</a></td>';
}
print '</tr>';
$var=!$var;

View File

@@ -25,6 +25,7 @@
* \brief File with class to manage cheque delivery receipts
*/
require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
/**
@@ -647,17 +648,83 @@ class RemiseCheque extends CommonObject
$resql = $this->db->query($sql);
if ($resql)
{
$this->updateAmount();
}
else
{
$this->errno = -1032;
dol_syslog("RemiseCheque::removeCheck ERREUR UPDATE ($this->errno)");
}
{
$this->updateAmount();
}
else
{
$this->errno = -1032;
dol_syslog("RemiseCheque::removeCheck ERREUR UPDATE ($this->errno)");
}
}
return 0;
}
/**
* Check rejection management
* Reopen linked invoices and saves a new negative payment
*
* @param int $bank_id Id of bank line concerned
* @param date $rejection_date Date to use on the negative payment
* @return int
*/
function reject_check($bank_id, $rejection_date)
{
global $db, $user;
$payment = new Paiement($db);
$payment->fetch(0,0,$bank_id);
$bankaccount = $payment->fk_account;
// Get invoice list to reopen them
$sql = 'SELECT pf.fk_facture, pf.amount';
$sql.= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf';
$sql.= ' WHERE pf.fk_paiement = '.$payment->id;
$resql=$db->query($sql);
if ($resql)
{
$rejectedPayment = new Paiement($db);
$rejectedPayment->amounts = array();
$rejectedPayment->datepaye = $rejection_date;
$rejectedPayment->paiementid = dol_getIdFromCode($this->db, 'CHQ', 'c_paiement');
$rejectedPayment->num_paiement = $payment->numero;
while($obj = $db->fetch_object($resql))
{
$invoice = new Facture($db);
$invoice->fetch($obj->fk_facture);
$invoice->set_unpaid($user);
$rejectedPayment->amounts[$obj->fk_facture] = price2num($obj->amount) * -1;
}
if ($rejectedPayment->create($user) > 0)
{
$result=$rejectedPayment->addPaymentToBank($user,'payment','(CheckRejected)',$bankaccount,'','');
if ($result > 0)
{
$payment->reject();
return $rejectedPayment->id;
}
else
{
return -1;
}
}
else
{
return -1;
}
}
else
{
$this->error=$this->db->error();
return -1;
}
}
/**
* Charge les proprietes ref_previous et ref_next
*
@@ -747,7 +814,7 @@ class RemiseCheque extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."bordereau_cheque";
$sql.= " SET number = '".$number."'" ;
$sql.= " WHERE rowid = ".$this->id;
dol_syslog("RemiseCheque::set_number", LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)

View File

@@ -78,11 +78,12 @@ class Paiement extends CommonObject
/**
* Load payment from database
*
* @param int $id Id of payment to get
* @param int $ref Ref of payment to get (same as $id)
* @return int <0 if KO, 0 if not found, >0 if OK
* @param int $id Id of payment to get
* @param string $ref Ref of payment to get (currently ref = id but this may change in future)
* @param int $fk_bank Id of bank line associated to payment
* @return int <0 if KO, 0 if not found, >0 if OK
*/
function fetch($id, $ref='')
function fetch($id, $ref='', $fk_bank='')
{
$sql = 'SELECT p.rowid, p.datep as dp, p.amount, p.statut, p.fk_bank,';
$sql.= ' c.code as type_code, c.libelle as type_libelle,';
@@ -91,10 +92,12 @@ class Paiement extends CommonObject
$sql.= ' FROM '.MAIN_DB_PREFIX.'c_paiement as c, '.MAIN_DB_PREFIX.'paiement as p';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid ';
$sql.= ' WHERE p.fk_paiement = c.id';
if ($ref)
$sql.= ' AND p.rowid = '.$ref;
else
if ($id > 0)
$sql.= ' AND p.rowid = '.$id;
else if ($ref)
$sql.= ' AND p.rowid = '.$ref;
else if ($fk_bank)
$sql.= ' AND p.fk_bank = '.$fk_bank;
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
$result = $this->db->query($sql);
@@ -116,7 +119,8 @@ class Paiement extends CommonObject
$this->type_code = $obj->type_code;
$this->statut = $obj->statut;
$this->bank_account = $obj->fk_account;
$this->bank_account = $obj->fk_account; // deprecated
$this->fk_account = $obj->fk_account;
$this->bank_line = $obj->fk_bank;
$this->db->free($result);
@@ -670,6 +674,29 @@ class Paiement extends CommonObject
}
}
/**
* Reject payment
*
* @return int <0 if KO, >0 if OK
*/
function reject()
{
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET statut = 2 WHERE rowid = '.$this->id;
dol_syslog(get_class($this).'::reject', LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
return 1;
}
else
{
$this->error=$this->db->lasterror();
dol_syslog(get_class($this).'::reject '.$this->error);
return -1;
}
}
/*
* \brief Information sur l'objet
* \param id id du paiement dont il faut afficher les infos

View File

@@ -176,6 +176,8 @@ if ($_GET["action"] == 'create')
print '<input type="hidden" name="chid" value="'.$chid.'">';
print '<input type="hidden" name="action" value="add_payment">';
dol_fiche_head('', '');
print '<table cellspacing="0" class="border" width="100%" cellpadding="2">';
print "<tr class=\"liste_titre\"><td colspan=\"3\">".$langs->trans("SocialContribution")."</td>";
@@ -235,7 +237,7 @@ if ($_GET["action"] == 'create')
print '</table>';
print '<br>';
dol_fiche_end();
/*
* Autres charges impayees

View File

@@ -21,7 +21,7 @@
/**
* \file htdocs/compta/tva/clients.php
* \ingroup tax
* \ingroup tax
* \brief Page des societes
*/
@@ -30,6 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/ccountry.class.php';
$langs->load("bills");
$langs->load("compta");
@@ -39,8 +40,7 @@ $langs->load("other");
// Date range
$year=GETPOST("year");
if (empty($year))
{
if (empty($year)) {
$year_current = strftime("%Y",dol_now());
$year_start = $year_current;
} else {
@@ -50,38 +50,55 @@ if (empty($year))
$date_start=dol_mktime(0,0,0,$_REQUEST["date_startmonth"],$_REQUEST["date_startday"],$_REQUEST["date_startyear"]);
$date_end=dol_mktime(23,59,59,$_REQUEST["date_endmonth"],$_REQUEST["date_endday"],$_REQUEST["date_endyear"]);
// Quarter
if (empty($date_start) || empty($date_end)) // We define date_start and date_end
{
$q=GETPOST("q");
if (empty($q))
{
if (isset($_REQUEST["month"])) { $date_start=dol_get_first_day($year_start,$_REQUEST["month"],false); $date_end=dol_get_last_day($year_start,$_REQUEST["month"],false); }
else
{
$month_current = strftime("%m",dol_now());
if ($month_current >= 10) $q=4;
elseif ($month_current >= 7) $q=3;
elseif ($month_current >= 4) $q=2;
else $q=1;
if (empty($date_start) || empty($date_end)) {// We define date_start and date_end
$q=GETPOST("q");
if (empty($q)) {
if (isset($_REQUEST["month"])) {
$date_start=dol_get_first_day($year_start,$_REQUEST["month"],false);
$date_end=dol_get_last_day($year_start,$_REQUEST["month"],false);
} else {
$month_current = strftime("%m",dol_now());
if ($month_current >= 10) $q=4;
elseif ($month_current >= 7) $q=3;
elseif ($month_current >= 4) $q=2;
else $q=1;
}
}
if ($q==1) { $date_start=dol_get_first_day($year_start,1,false); $date_end=dol_get_last_day($year_start,3,false); }
if ($q==2) { $date_start=dol_get_first_day($year_start,4,false); $date_end=dol_get_last_day($year_start,6,false); }
if ($q==3) { $date_start=dol_get_first_day($year_start,7,false); $date_end=dol_get_last_day($year_start,9,false); }
if ($q==4) { $date_start=dol_get_first_day($year_start,10,false); $date_end=dol_get_last_day($year_start,12,false); }
if ($q==1) {
$date_start=dol_get_first_day($year_start,1,false);
$date_end=dol_get_last_day($year_start,3,false);
}
if ($q==2) {
$date_start=dol_get_first_day($year_start,4,false);
$date_end=dol_get_last_day($year_start,6,false);
}
if ($q==3) {
$date_start=dol_get_first_day($year_start,7,false);
$date_end=dol_get_last_day($year_start,9,false);
}
if ($q==4) {
$date_start=dol_get_first_day($year_start,10,false);
$date_end=dol_get_last_day($year_start,12,false);
}
}
$min = GETPOST("min");
if (empty($min)) $min = 0;
if (empty($min)) {
$min = 0;
}
// Define modetax (0 or 1)
// 0=normal, 1=option vat for services is on debit
$modetax = $conf->global->TAX_MODE;
if (isset($_REQUEST["modetax"])) $modetax=$_REQUEST["modetax"];
if (isset($_REQUEST["modetax"])) {
$modetax=$_REQUEST["modetax"];
}
// Security check
$socid = GETPOST('socid','int');
if ($user->societe_id) $socid=$user->societe_id;
if ($user->societe_id) {
$socid=$user->societe_id;
}
$result = restrictedArea($user, 'tax', '', '', 'charges');
@@ -95,9 +112,15 @@ $company_static=new Societe($db);
$morequerystring='';
$listofparams=array('date_startmonth','date_startyear','date_startday','date_endmonth','date_endyear','date_endday');
foreach($listofparams as $param)
{
if (GETPOST($param)!='') $morequerystring.=($morequerystring?'&':'').$param.'='.GETPOST($param);
foreach($listofparams as $param) {
if (GETPOST($param)!='') {
$morequerystring.=($morequerystring?'&':'').$param.'='.GETPOST($param);
}
}
$special_report = false;
if (isset($_REQUEST['extra_report']) && $_REQUEST['extra_report'] == 1) {
$special_report = true;
}
llxHeader('','','','',0,0,'','',$morequerystring);
@@ -109,62 +132,92 @@ $fsearch.=' '.$langs->trans("SalesTurnoverMinimum").': ';
$fsearch.=' <input type="text" name="min" id="min" value="'.$min.'" size="6">';
// Affiche en-tete du rapport
if ($modetax==1) // Calculate on invoice for goods and services
{
$name=$langs->trans("VATReportByCustomersInDueDebtMode");
if ($modetax==1) { // Calculate on invoice for goods and services
$name=$langs->trans("VATReportByCustomersInDueDebtMode");
$calcmode=$langs->trans("CalcModeVATDebt");
$calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')';
//$name.='<br>('.$langs->trans("SeeVATReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modetax=0">','</a>').')';
$period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
//$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modetax=".$modetax."'>".img_next()."</a>":"");
$description=$langs->trans("RulesVATDueServices");
$description.='<br>';
$description.=$langs->trans("RulesVATDueProducts");
//if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite');
//if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.='<br>'.$langs->trans("DepositsAreNotIncluded");
else $description.='<br>'.$langs->trans("DepositsAreIncluded");
$calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')';
//$name.='<br>('.$langs->trans("SeeVATReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modetax=0">','</a>').')';
$period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
//$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modetax=".$modetax."'>".img_next()."</a>":"");
$description=$langs->trans("RulesVATDueServices");
$description.='<br>';
$description.=$langs->trans("RulesVATDueProducts");
//if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite');
//if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description.='<br>'.$langs->trans("DepositsAreNotIncluded");
} else {
$description.='<br>'.$langs->trans("DepositsAreIncluded");
}
$description.=$fsearch;
$description.='<br>'
. '<input type="radio" name="extra_report" value="0" '.($special_report?'':'checked="checked"').'> '
. $langs->trans('SimpleReport')
. '</input>'
. '<br>'
. '<input type="radio" name="extra_report" value="1" '.($special_report?'checked="checked"':'').'> '
. $langs->trans('AddExtraReport')
. '</input>'
. '<br>';
$builddate=time();
//$exportlink=$langs->trans("NotYetAvailable");
//$exportlink=$langs->trans("NotYetAvailable");
$elementcust=$langs->trans("CustomersInvoices");
$productcust=$langs->trans("Description");
$amountcust=$langs->trans("AmountHT");
if ($mysoc->tva_assuj) $vatcust.=' ('.$langs->trans("ToPay").')';
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
}
$elementsup=$langs->trans("SuppliersInvoices");
$productsup=$langs->trans("Description");
$amountsup=$langs->trans("AmountHT");
if ($mysoc->tva_assuj) $vatsup.=' ('.$langs->trans("ToGetBack").')';
if ($mysoc->tva_assuj) {
$vatsup.=' ('.$langs->trans("ToGetBack").')';
}
}
if ($modetax==0) // Invoice for goods, payment for services
{
$name=$langs->trans("VATReportByCustomersInInputOutputMode");
$calcmode=$langs->trans("CalcModeVATEngagement");
$calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')';
//$name.='<br>('.$langs->trans("SeeVATReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modetax=1">','</a>').')';
$period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
//$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modetax=".$modetax."'>".img_next()."</a>":"");
$description=$langs->trans("RulesVATInServices");
$description.=' '.$langs->trans("DepositsAreIncluded");
$description.='<br>';
$description.=$langs->trans("RulesVATInProducts");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.=' '.$langs->trans("DepositsAreNotIncluded");
else $description.=' '.$langs->trans("DepositsAreIncluded");
//if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite');
//if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
$description.=$fsearch;
$builddate=time();
//$exportlink=$langs->trans("NotYetAvailable");
if ($modetax==0) { // Invoice for goods, payment for services
$name=$langs->trans("VATReportByCustomersInInputOutputMode");
$calcmode=$langs->trans("CalcModeVATEngagement");
$calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')';
//$name.='<br>('.$langs->trans("SeeVATReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year_start.'&modetax=1">','</a>').')';
$period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
//$periodlink=($year_start?"<a href='".$_SERVER["PHP_SELF"]."?year=".($year_start-1)."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".($year_start+1)."&modetax=".$modetax."'>".img_next()."</a>":"");
$description=$langs->trans("RulesVATInServices");
$description.=' '.$langs->trans("DepositsAreIncluded");
$description.='<br>';
$description.=$langs->trans("RulesVATInProducts");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description .= ' ' . $langs->trans("DepositsAreNotIncluded");
} else {
$description .= ' ' . $langs->trans("DepositsAreIncluded");
}
//if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite');
//if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
$description.=$fsearch;
$description.='<br>'
. '<input type="radio" name="extra_report" value="0" '.($special_report?'':'checked="checked"').'> '
. $langs->trans('SimpleReport')
. '</input>'
. '<br>'
. '<input type="radio" name="extra_report" value="1" '.($special_report?'checked="checked"':'').'> '
. $langs->trans('AddExtraReport')
. '</input>'
. '<br>';
$builddate=time();
//$exportlink=$langs->trans("NotYetAvailable");
$elementcust=$langs->trans("CustomersInvoices");
$productcust=$langs->trans("Description");
$amountcust=$langs->trans("AmountHT");
if ($mysoc->tva_assuj) $vatcust.=' ('.$langs->trans("ToPay").')';
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
}
$elementsup=$langs->trans("SuppliersInvoices");
$productsup=$langs->trans("Description");
$amountsup=$langs->trans("AmountHT");
if ($mysoc->tva_assuj) $vatsup.=' ('.$langs->trans("ToGetBack").')';
if ($mysoc->tva_assuj) {
$vatsup.=' ('.$langs->trans("ToGetBack").')';
}
}
report_header($name,$nomlink,$period,$periodlink,$description,$builddate,$exportlink,array(),$calcmode);
@@ -198,25 +251,18 @@ $parameters["direction"] = 'sell';
$hookmanager->initHooks(array('externalbalance'));
$reshook=$hookmanager->executeHooks('addStatisticLine',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if (is_array($coll_list))
{
if (is_array($coll_list)) {
$var=true;
$total = 0; $totalamount = 0;
$i = 1;
foreach($coll_list as $coll)
{
if($min == 0 or ($min > 0 && $coll->amount > $min))
{
foreach ($coll_list as $coll) {
if ($min == 0 or ($min > 0 && $coll->amount > $min)) {
$var=!$var;
$intra = str_replace($find,$replace,$coll->tva_intra);
if(empty($intra))
{
if($coll->assuj == '1')
{
if(empty($intra)) {
if($coll->assuj == '1') {
$intra = $langs->trans('Unknown');
}
else
{
} else {
//$intra = $langs->trans('NotRegistered');
$intra = '';
}
@@ -232,28 +278,27 @@ if (is_array($coll_list))
print '<td class="nowrap">'.$intra."</td>";
print "<td class=\"nowrap\" align=\"right\">".price($coll->amount)."</td>";
print "<td class=\"nowrap\" align=\"right\">".price($coll->tva)."</td>";
$totalamount = $totalamount + $coll->amount;
$totalamount = $totalamount + $coll->amount;
$total = $total + $coll->tva;
print "</tr>\n";
$i++;
}
}
$x_coll_sum = $total;
$x_coll_sum = $total;
print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("Total").':</td>';
print '<td class="nowrap" align="right">'.price($totalamount).'</td>';
print '<td class="nowrap" align="right">'.price($totalamount).'</td>';
print '<td class="nowrap" align="right">'.price($total).'</td>';
print '</tr>';
}
else
{
} else {
$langs->load("errors");
if ($coll_list == -1)
print '<tr><td colspan="5">'.$langs->trans("ErrorNoAccountancyModuleLoaded").'</td></tr>';
else if ($coll_list == -2)
print '<tr><td colspan="5">'.$langs->trans("FeatureNotYetAvailable").'</td></tr>';
else
print '<tr><td colspan="5">'.$langs->trans("Error").'</td></tr>';
if ($coll_list == -1) {
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
} else if ($coll_list == -2) {
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
} else {
print '<tr><td colspan="5">' . $langs->trans("Error") . '</td></tr>';
}
}
//print '</table>';
@@ -279,25 +324,18 @@ $coll_list = vat_by_thirdparty($db,0,$date_start,$date_end,$modetax,'buy');
$parameters["direction"] = 'buy';
$reshook=$hookmanager->executeHooks('addStatisticLine',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if (is_array($coll_list))
{
if (is_array($coll_list)) {
$var=true;
$total = 0; $totalamount = 0;
$i = 1;
foreach($coll_list as $coll)
{
if($min == 0 or ($min > 0 && $coll->amount > $min))
{
foreach ($coll_list as $coll) {
if ($min == 0 or ($min > 0 && $coll->amount > $min)) {
$var=!$var;
$intra = str_replace($find,$replace,$coll->tva_intra);
if(empty($intra))
{
if($coll->assuj == '1')
{
if (empty($intra)) {
if ($coll->assuj == '1') {
$intra = $langs->trans('Unknown');
}
else
{
} else {
//$intra = $langs->trans('NotRegistered');
$intra = '';
}
@@ -313,44 +351,197 @@ if (is_array($coll_list))
print '<td class="nowrap">'.$intra."</td>";
print "<td class=\"nowrap\" align=\"right\">".price($coll->amount)."</td>";
print "<td class=\"nowrap\" align=\"right\">".price($coll->tva)."</td>";
$totalamount = $totalamount + $coll->amount;
$totalamount = $totalamount + $coll->amount;
$total = $total + $coll->tva;
print "</tr>\n";
$i++;
}
}
$x_paye_sum = $total;
$x_paye_sum = $total;
print '<tr class="liste_total"><td align="right" colspan="3">'.$langs->trans("Total").':</td>';
print '<td class="nowrap" align="right">'.price($totalamount).'</td>';
print '<td class="nowrap" align="right">'.price($totalamount).'</td>';
print '<td class="nowrap" align="right">'.price($total).'</td>';
print '</tr>';
print '</table>';
// Total to pay
print '<br><br>';
print '<table class="noborder" width="100%">';
$diff = $x_coll_sum - $x_paye_sum;
print '<tr class="liste_total">';
print '<td class="liste_total" colspan="4">'.$langs->trans("TotalToPay").($q?', '.$langs->trans("Quadri").' '.$q:'').'</td>';
print '<td class="liste_total nowrap" align="right"><b>'.price(price2num($diff,'MT'))."</b></td>\n";
print "</tr>\n";
// Total to pay
print '<br><br>';
print '<table class="noborder" width="100%">';
$diff = $x_coll_sum - $x_paye_sum;
print '<tr class="liste_total">';
print '<td class="liste_total" colspan="4">'.$langs->trans("TotalToPay").($q?', '.$langs->trans("Quadri").' '.$q:'').'</td>';
print '<td class="liste_total nowrap" align="right"><b>'.price(price2num($diff,'MT'))."</b></td>\n";
print "</tr>\n";
}
else
{
} else {
$langs->load("errors");
if ($coll_list == -1)
print '<tr><td colspan="5">'.$langs->trans("ErrorNoAccountancyModuleLoaded").'</td></tr>';
else if ($coll_list == -2)
print '<tr><td colspan="5">'.$langs->trans("FeatureNotYetAvailable").'</td></tr>';
else
print '<tr><td colspan="5">'.$langs->trans("Error").'</td></tr>';
if ($coll_list == -1) {
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
} else if ($coll_list == -2) {
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
} else {
print '<tr><td colspan="5">' . $langs->trans("Error") . '</td></tr>';
}
}
print '</table>';
if ($special_report) {
// Get country 2-letters code
global $mysoc;
$country_id = $mysoc->country_id;
$country = new Ccountry($db);
$country->fetch($country_id);
// Print listing of other-country customers as additional report
// This matches tax requirements to list all same-country customers (only)
print '<h3>'.$langs->trans('OtherCountriesCustomersReport').'</h3>';
print $langs->trans('BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry');
$coll_list = vat_by_thirdparty($db, 0, $date_start, $date_end, $modetax, 'sell');
print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
print '<td align="left">' . $langs->trans("Num") . "</td>";
print '<td align="left">' . $langs->trans("Customer") . "</td>";
print "<td>" . $langs->trans("VATIntra") . "</td>";
print "<td align=\"right\">" . $langs->trans("AmountHTVATRealReceived") . "</td>";
print "<td align=\"right\">" . $vatcust . "</td>";
print "</tr>\n";
if (is_array($coll_list)) {
$var = true;
$total = 0;
$totalamount = 0;
$i = 1;
foreach ($coll_list as $coll) {
if (substr($coll->tva_intra, 0, 2) == $country->code) {
// Only use different-country VAT codes
continue;
}
if ($min == 0 or ($min > 0 && $coll->amount > $min)) {
$var = !$var;
$intra = str_replace($find, $replace, $coll->tva_intra);
if (empty($intra)) {
if ($coll->assuj == '1') {
$intra = $langs->trans('Unknown');
} else {
//$intra = $langs->trans('NotRegistered');
$intra = '';
}
}
print "<tr " . $bc[$var] . ">";
print '<td class="nowrap">' . $i . "</td>";
$company_static->id = $coll->socid;
$company_static->name = $coll->name;
$company_static->client = 1;
print '<td class="nowrap">' . $company_static->getNomUrl(1,
'customer') . '</td>';
$find = array(' ', '.');
$replace = array('', '');
print '<td class="nowrap">' . $intra . "</td>";
print "<td class=\"nowrap\" align=\"right\">" . price($coll->amount) . "</td>";
print "<td class=\"nowrap\" align=\"right\">" . price($coll->tva) . "</td>";
$totalamount = $totalamount + $coll->amount;
$total = $total + $coll->tva;
print "</tr>\n";
$i++;
}
}
$x_coll_sum = $total;
print '<tr class="liste_total"><td align="right" colspan="3">' . $langs->trans("Total") . ':</td>';
print '<td class="nowrap" align="right">' . price($totalamount) . '</td>';
print '<td class="nowrap" align="right">' . price($total) . '</td>';
print '</tr>';
} else {
$langs->load("errors");
if ($coll_list == -1) {
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
} else {
if ($coll_list == -2) {
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
} else {
print '<tr><td colspan="5">' . $langs->trans("Error") . '</td></tr>';
}
}
}
print '</table>';
// Print listing of same-country customers as additional report
// This matches tax requirements to list all same-country customers (only)
print '<h3>'.$langs->trans('SameCountryCustomersWithVAT').'</h3>';
print $langs->trans('BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry');
$coll_list = vat_by_thirdparty($db, 0, $date_start, $date_end, $modetax, 'sell');
print "<table class=\"noborder\" width=\"100%\">";
print "<tr class=\"liste_titre\">";
print '<td align="left">' . $langs->trans("Num") . "</td>";
print '<td align="left">' . $langs->trans("Customer") . "</td>";
print "<td>" . $langs->trans("VATIntra") . "</td>";
print "<td align=\"right\">" . $langs->trans("AmountHTVATRealReceived") . "</td>";
print "<td align=\"right\">" . $vatcust . "</td>";
print "</tr>\n";
if (is_array($coll_list)) {
$var = true;
$total = 0;
$totalamount = 0;
$i = 1;
foreach ($coll_list as $coll) {
if (substr($coll->tva_intra, 0, 2) != $country->code) {
// Only use same-country VAT codes
continue;
}
if ($min == 0 or ($min > 0 && $coll->amount > $min)) {
$var = !$var;
$intra = str_replace($find, $replace, $coll->tva_intra);
if (empty($intra)) {
if ($coll->assuj == '1') {
$intra = $langs->trans('Unknown');
} else {
//$intra = $langs->trans('NotRegistered');
$intra = '';
}
}
print "<tr " . $bc[$var] . ">";
print '<td class="nowrap">' . $i . "</td>";
$company_static->id = $coll->socid;
$company_static->name = $coll->name;
$company_static->client = 1;
print '<td class="nowrap">' . $company_static->getNomUrl(1, 'customer') . '</td>';
$find = array(' ', '.');
$replace = array('', '');
print '<td class="nowrap">' . $intra . "</td>";
print "<td class=\"nowrap\" align=\"right\">" . price($coll->amount) . "</td>";
print "<td class=\"nowrap\" align=\"right\">" . price($coll->tva) . "</td>";
$totalamount = $totalamount + $coll->amount;
$total = $total + $coll->tva;
print "</tr>\n";
$i++;
}
}
$x_coll_sum = $total;
print '<tr class="liste_total"><td align="right" colspan="3">' . $langs->trans("Total") . ':</td>';
print '<td class="nowrap" align="right">' . price($totalamount) . '</td>';
print '<td class="nowrap" align="right">' . price($total) . '</td>';
print '</tr>';
} else {
$langs->load("errors");
if ($coll_list == -1) {
print '<tr><td colspan="5">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
} else {
if ($coll_list == -2) {
print '<tr><td colspan="5">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
} else {
print '<tr><td colspan="5">' . $langs->trans("Error") . '</td></tr>';
}
}
}
print '</table>';
}
llxFooter();

View File

@@ -72,8 +72,8 @@ function tva_coll($db,$y,$q)
$sql.= " AND f.fk_statut in (1,2)";
$sql.= " AND f.rowid = d.fk_facture ";
$sql.= " AND date_format(f.datef,'%Y') = '".$y."'";
$sql.= " AND (round(date_format(f.datef,'%m') > ".(($q-1)*3);
$sql.= " AND round(date_format(f.datef,'%m')) <= ".($q*3).")";
$sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3);
$sql.= " AND date_format(f.datef,'%m') <= ".($q*3).")";
$sql.= " ORDER BY rate, facid";
}
@@ -131,7 +131,7 @@ function tva_paye($db, $y,$q)
if ($conf->global->ACCOUNTING_MODE == "CREANCES-DETTES")
{
// Si on paye la tva sur les factures dues (non brouillon)
$sql = "SELECT d.fk_facture_fourn as facid, f.facnumber as facnum, d.tva_tx as rate, d.total_ht as totalht, d.tva as amount";
$sql = "SELECT d.fk_facture_fourn as facid, f.ref_supplier as facnum, d.tva_tx as rate, d.total_ht as totalht, d.tva as amount";
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
$sql.= ", ".MAIN_DB_PREFIX."facture_fourn_det as d" ;
$sql.= ", ".MAIN_DB_PREFIX."societe as s";
@@ -222,8 +222,7 @@ if ($conf->global->ACCOUNTING_MODE == "CREANCES-DETTES")
$subtot_coll_vat = 0;
$subtot_paye_total = 0;
$subtot_paye_vat = 0;
for ($q = 1 ; $q <= 4 ; $q++)
{
for ($q = 1 ; $q <= 4 ; $q++) {
print "<tr class=\"liste_titre\"><td colspan=\"8\">".$langs->trans("Quadri")." $q (".dol_print_date(dol_mktime(0,0,0,(($q-1)*3)+1,1,$y),"%b %Y").' - '.dol_print_date(dol_mktime(0,0,0,($q*3),1,$y),"%b %Y").")</td></tr>";
$var=true;

View File

@@ -0,0 +1,713 @@
<?php
/* Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006-2007, 2015 Yannick Warnier <ywarnier@beeznest.org>
* Copyright (C) 2014 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
* 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/compta/tva/quadri_detail.php
* \ingroup tax
* \brief Trimestrial page - detailed version
* TODO Deal with recurrent invoices as well
*/
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php';
$langs->load("main");
$langs->load("bills");
$langs->load("compta");
$langs->load("companies");
$langs->load("products");
$langs->load("other");
// Date range
$year=GETPOST('year', 'int');
if (empty($year)) {
$year_current = strftime("%Y",dol_now());
$year_start = $year_current;
} else {
$year_current = $year;
$year_start = $year;
}
$date_start=dol_mktime(0,0,0,$_REQUEST["date_startmonth"],$_REQUEST["date_startday"],$_REQUEST["date_startyear"]);
$date_end=dol_mktime(23,59,59,$_REQUEST["date_endmonth"],$_REQUEST["date_endday"],$_REQUEST["date_endyear"]);
// Quarter
if (empty($date_start) || empty($date_end)) { // We define date_start and date_end
$q=GETPOST('q', 'int');
if (empty($q)) {
if (isset($_REQUEST["month"])) {
$date_start=dol_get_first_day($year_start,$_REQUEST["month"],false);
$date_end=dol_get_last_day($year_start,$_REQUEST["month"],false);
} else {
$month_current = strftime("%m",dol_now());
if ($month_current >= 10) $q=4;
elseif ($month_current >= 7) $q=3;
elseif ($month_current >= 4) $q=2;
else $q=1;
}
}
if ($q==1) {
$date_start=dol_get_first_day($year_start,1,false);
$date_end=dol_get_last_day($year_start,3,false);
}
if ($q==2) {
$date_start=dol_get_first_day($year_start,4,false);
$date_end=dol_get_last_day($year_start,6,false);
}
if ($q==3) {
$date_start=dol_get_first_day($year_start,7,false);
$date_end=dol_get_last_day($year_start,9,false);
}
if ($q==4) {
$date_start=dol_get_first_day($year_start,10,false);
$date_end=dol_get_last_day($year_start,12,false);
}
}
$min = GETPOST("min");
if (empty($min)) {
$min = 0;
}
// Define modetax (0 or 1)
// 0=normal, 1=option vat for services is on debit
$modetax = $conf->global->TAX_MODE;
if (isset($_REQUEST["modetax"])) {
$modetax=$_REQUEST["modetax"];
}
if (empty($modetax)) {
$modetax=0;
}
// Security check
$socid = GETPOST('socid','int');
if ($user->societe_id) {
$socid=$user->societe_id;
}
$result = restrictedArea($user, 'tax', '', '', 'charges');
/*
* View
*/
$morequerystring='';
$listofparams=array('date_startmonth','date_startyear','date_startday','date_endmonth','date_endyear','date_endday');
foreach ($listofparams as $param) {
if (GETPOST($param)!='') {
$morequerystring.=($morequerystring?'&':'').$param.'='.GETPOST($param);
}
}
llxHeader('','','','',0,0,'','',$morequerystring);
$form=new Form($db);
$company_static=new Societe($db);
$invoice_customer=new Facture($db);
$invoice_supplier=new FactureFournisseur($db);
$product_static=new Product($db);
$payment_static=new Paiement($db);
$paymentfourn_static=new PaiementFourn($db);
//print_fiche_titre($langs->trans("VAT"),"");
//$fsearch.='<br>';
$fsearch.=' <input type="hidden" name="year" value="'.$year.'">';
$fsearch.=' <input type="hidden" name="modetax" value="'.$modetax.'">';
//$fsearch.=' '.$langs->trans("SalesTurnoverMinimum").': ';
//$fsearch.=' <input type="text" name="min" value="'.$min.'">';
// Affiche en-tete du rapport
if ($modetax==1) { // Calculate on invoice for goods and services
$nom=$langs->trans("VATReportByQuartersInDueDebtMode");
$calcmode=$langs->trans("CalcModeVATDebt");
$calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')';
$period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
$prevyear=$year_start; $prevquarter=$q;
if ($prevquarter > 1) {
$prevquarter--;
} else {
$prevquarter=4; $prevyear--;
}
$nextyear=$year_start; $nextquarter=$q;
if ($nextquarter < 4) {
$nextquarter++;
} else {
$nextquarter=1; $nextyear++;
}
//$periodlink=($prevyear?"<a href='".$_SERVER["PHP_SELF"]."?year=".$prevyear."&q=".$prevquarter."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".$nextyear."&q=".$nextquarter."&modetax=".$modetax."'>".img_next()."</a>":"");
$description=$langs->trans("RulesVATDueServices");
$description.='<br>';
$description.=$langs->trans("RulesVATDueProducts");
//if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite');
//if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description.='<br>'.$langs->trans("DepositsAreNotIncluded");
} else {
$description.='<br>'.$langs->trans("DepositsAreIncluded");
}
$description.=$fsearch;
$builddate=time();
//$exportlink=$langs->trans("NotYetAvailable");
$elementcust=$langs->trans("CustomersInvoices");
$productcust=$langs->trans("ProductOrService");
$amountcust=$langs->trans("AmountHT");
$vatcust=$langs->trans("VATReceived");
$namecust=$langs->trans("Name");
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
}
$elementsup=$langs->trans("SuppliersInvoices");
$productsup=$langs->trans("ProductOrService");
$amountsup=$langs->trans("AmountHT");
$vatsup=$langs->trans("VATPaid");
$namesup=$namecust;
if ($mysoc->tva_assuj) {
$vatsup.=' ('.$langs->trans("ToGetBack").')';
}
}
if ($modetax==0) { // Invoice for goods, payment for services
$nom=$langs->trans("VATReportByQuartersInInputOutputMode");
$calcmode=$langs->trans("CalcModeVATEngagement");
$calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRules",DOL_URL_ROOT.'/admin/taxes.php').')';
$period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
$prevyear=$year_start; $prevquarter=$q;
if ($prevquarter > 1) {
$prevquarter--;
} else {
$prevquarter=4; $prevyear--;
}
$nextyear=$year_start; $nextquarter=$q;
if ($nextquarter < 4) {
$nextquarter++;
} else {
$nextquarter=1; $nextyear++;
}
//$periodlink=($prevyear?"<a href='".$_SERVER["PHP_SELF"]."?year=".$prevyear."&q=".$prevquarter."&modetax=".$modetax."'>".img_previous()."</a> <a href='".$_SERVER["PHP_SELF"]."?year=".$nextyear."&q=".$nextquarter."&modetax=".$modetax."'>".img_next()."</a>":"");
$description=$langs->trans("RulesVATInServices");
$description.=' '.$langs->trans("DepositsAreIncluded");
$description.='<br>';
$description.=$langs->trans("RulesVATInProducts");
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
$description.=' '.$langs->trans("DepositsAreNotIncluded");
} else {
$description.=' '.$langs->trans("DepositsAreIncluded");
}
//if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='<br>'.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite');
//if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
$description.=$fsearch;
$builddate=time();
//$exportlink=$langs->trans("NotYetAvailable");
$elementcust=$langs->trans("CustomersInvoices");
$productcust=$langs->trans("ProductOrService");
$amountcust=$langs->trans("AmountHT");
$vatcust=$langs->trans("VATReceived");
$namecust=$langs->trans("Name");
if ($mysoc->tva_assuj) {
$vatcust.=' ('.$langs->trans("ToPay").')';
}
$elementsup=$langs->trans("SuppliersInvoices");
$productsup=$productcust;
$amountsup=$amountcust;
$vatsup=$langs->trans("VATPaid");
$namesup=$namecust;
if ($mysoc->tva_assuj) {
$vatsup.=' ('.$langs->trans("ToGetBack").')';
}
}
report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportlink,array(),$calcmode);
$vatcust=$langs->trans("VATReceived");
$vatsup=$langs->trans("VATPaid");
// VAT Received and paid
echo '<table class="noborder" width="100%">';
$y = $year_current;
$total = 0;
$i=0;
$columns = 6;
// Load arrays of datas
$x_coll = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell');
$x_paye = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy');
if (!is_array($x_coll) || !is_array($x_paye)) {
$langs->load("errors");
if ($x_coll == -1) {
print '<tr><td colspan="' . $columns . '">' . $langs->trans("ErrorNoAccountancyModuleLoaded") . '</td></tr>';
} else if ($x_coll == -2) {
print '<tr><td colspan="' . $columns . '">' . $langs->trans("FeatureNotYetAvailable") . '</td></tr>';
} else {
print '<tr><td colspan="' . $columns . '">' . $langs->trans("Error") . '</td></tr>';
}
} else {
$x_both = array();
//now, from these two arrays, get another array with one rate per line
foreach(array_keys($x_coll) as $my_coll_rate) {
$x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht'];
$x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat'];
$x_both[$my_coll_rate]['paye']['totalht'] = 0;
$x_both[$my_coll_rate]['paye']['vat'] = 0;
$x_both[$my_coll_rate]['coll']['links'] = '';
$x_both[$my_coll_rate]['coll']['detail'] = array();
foreach($x_coll[$my_coll_rate]['facid'] as $id=>$dummy) {
$invoice_customer->id=$x_coll[$my_coll_rate]['facid'][$id];
$invoice_customer->ref=$x_coll[$my_coll_rate]['facnum'][$id];
$invoice_customer->type=$x_coll[$my_coll_rate]['type'][$id];
$company_static->fetch($x_coll[$my_coll_rate]['company_id'][$id]);
$x_both[$my_coll_rate]['coll']['detail'][] = array(
'id' =>$x_coll[$my_coll_rate]['facid'][$id],
'descr' =>$x_coll[$my_coll_rate]['descr'][$id],
'pid' =>$x_coll[$my_coll_rate]['pid'][$id],
'pref' =>$x_coll[$my_coll_rate]['pref'][$id],
'ptype' =>$x_coll[$my_coll_rate]['ptype'][$id],
'payment_id'=>$x_coll[$my_coll_rate]['payment_id'][$id],
'payment_amount'=>$x_coll[$my_coll_rate]['payment_amount'][$id],
'ftotal_ttc'=>$x_coll[$my_coll_rate]['ftotal_ttc'][$id],
'dtotal_ttc'=>$x_coll[$my_coll_rate]['dtotal_ttc'][$id],
'dtype' =>$x_coll[$my_coll_rate]['dtype'][$id],
'datef' =>$x_coll[$my_coll_rate]['datef'][$id],
'company_link'=>$company_static->getNomUrl(1,'',20),
'ddate_start'=>$x_coll[$my_coll_rate]['ddate_start'][$id],
'ddate_end' =>$x_coll[$my_coll_rate]['ddate_end'][$id],
'totalht' =>$x_coll[$my_coll_rate]['totalht_list'][$id],
'vat' =>$x_coll[$my_coll_rate]['vat_list'][$id],
'link' =>$invoice_customer->getNomUrl(1,'',12)
);
}
}
// tva paid
foreach (array_keys($x_paye) as $my_paye_rate) {
$x_both[$my_paye_rate]['paye']['totalht'] = $x_paye[$my_paye_rate]['totalht'];
$x_both[$my_paye_rate]['paye']['vat'] = $x_paye[$my_paye_rate]['vat'];
if (!isset($x_both[$my_paye_rate]['coll']['totalht'])) {
$x_both[$my_paye_rate]['coll']['totalht'] = 0;
$x_both[$my_paye_rate]['coll']['vat'] = 0;
}
$x_both[$my_paye_rate]['paye']['links'] = '';
$x_both[$my_paye_rate]['paye']['detail'] = array();
foreach ($x_paye[$my_paye_rate]['facid'] as $id=>$dummy) {
$invoice_supplier->id=$x_paye[$my_paye_rate]['facid'][$id];
$invoice_supplier->ref=$x_paye[$my_paye_rate]['facnum'][$id];
$invoice_supplier->type=$x_paye[$my_paye_rate]['type'][$id];
$company_static->fetch($x_paye[$my_paye_rate]['company_id'][$id]);
$x_both[$my_paye_rate]['paye']['detail'][] = array(
'id' =>$x_paye[$my_paye_rate]['facid'][$id],
'descr' =>$x_paye[$my_paye_rate]['descr'][$id],
'pid' =>$x_paye[$my_paye_rate]['pid'][$id],
'pref' =>$x_paye[$my_paye_rate]['pref'][$id],
'ptype' =>$x_paye[$my_paye_rate]['ptype'][$id],
'payment_id'=>$x_paye[$my_paye_rate]['payment_id'][$id],
'payment_amount'=>$x_paye[$my_paye_rate]['payment_amount'][$id],
'ftotal_ttc'=>price2num($x_paye[$my_paye_rate]['ftotal_ttc'][$id]),
'dtotal_ttc'=>price2num($x_paye[$my_paye_rate]['dtotal_ttc'][$id]),
'dtype' =>$x_paye[$my_paye_rate]['dtype'][$id],
'datef' =>$x_paye[$my_paye_rate]['datef'][$id],
'company_link'=>$company_static->getNomUrl(1,'',20),
'ddate_start'=>$x_paye[$my_paye_rate]['ddate_start'][$id],
'ddate_end' =>$x_paye[$my_paye_rate]['ddate_end'][$id],
'totalht' =>price2num($x_paye[$my_paye_rate]['totalht_list'][$id]),
'vat' =>$x_paye[$my_paye_rate]['vat_list'][$id],
'link' =>$invoice_supplier->getNomUrl(1,'',12)
);
}
}
//now we have an array (x_both) indexed by rates for coll and paye
//print table headers for this quadri - incomes first
$x_coll_sum = 0;
$x_coll_ht = 0;
$x_paye_sum = 0;
$x_paye_ht = 0;
$span=$columns-3;
if ($modetax == 0) $span+=2;
//print '<tr><td colspan="'.($span+1).'">'..')</td></tr>';
// Customers invoices
print '<tr class="liste_titre">';
print '<td align="left">'.$elementcust.'</td>';
print '<td align="left">'.$langs->trans("Date").'</td>';
print '<td align="left">'.$namecust.'</td>';
print '<td align="left">'.$productcust.'</td>';
if ($modetax == 0) {
print '<td align="right">'.$amountcust.'</td>';
print '<td align="right">'.$langs->trans("Payment").' ('.$langs->trans("PercentOfInvoice").')</td>';
}
print '<td align="right">'.$langs->trans("AmountHTVATRealReceived").'</td>';
print '<td align="right">'.$vatcust.'</td>';
print '</tr>';
$action = "tvadetail";
$parameters["mode"] = $modetax;
$parameters["start"] = $date_start;
$parameters["end"] = $date_end;
$object = array(&$x_coll, &$x_paye, &$x_both);
// Initialize technical object to manage hooks of expenses. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('externalbalance'));
$reshook=$hookmanager->executeHooks('addStatisticLine',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
foreach (array_keys($x_coll) as $rate) {
$subtot_coll_total_ht = 0;
$subtot_coll_vat = 0;
if (is_array($x_both[$rate]['coll']['detail'])) {
// VAT Rate
$var=true;
print "<tr>";
print '<td class="tax_rate">'.$langs->trans("Rate").': '.vatrate($rate).'%</td><td colspan="'.$span.'"></td>';
print '</tr>'."\n";
foreach ($x_both[$rate]['coll']['detail'] as $index => $fields) {
// Define type
$type=($fields['dtype']?$fields['dtype']:$fields['ptype']);
// Try to enhance type detection using date_start and date_end for free lines where type
// was not saved.
if (!empty($fields['ddate_start'])) {
$type=1;
}
if (!empty($fields['ddate_end'])) {
$type=1;
}
$var=!$var;
print '<tr '.$bc[$var].'>';
// Ref
print '<td class="nowrap" align="left">'.$fields['link'].'</td>';
// Invoice date
print '<td align="left">' . $fields['datef'] . '</td>';
// Company name
print '<td align="left">' . $fields['company_link'] . '</td>';
// Description
print '<td align="left">';
if ($fields['pid']) {
$product_static->id=$fields['pid'];
$product_static->ref=$fields['pref'];
$product_static->type=$fields['ptype'];
print $product_static->getNomUrl(1);
if (dol_string_nohtmltag($fields['descr'])) {
print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),16);
}
} else {
if ($type) {
$text = img_object($langs->trans('Service'),'service');
} else {
$text = img_object($langs->trans('Product'),'product');
}
if (preg_match('/^\((.*)\)$/',$fields['descr'],$reg)) {
if ($reg[1]=='DEPOSIT') {
$fields['descr']=$langs->transnoentitiesnoconv('Deposit');
} elseif ($reg[1]=='CREDIT_NOTE') {
$fields['descr']=$langs->transnoentitiesnoconv('CreditNote');
} else {
$fields['descr']=$langs->transnoentitiesnoconv($reg[1]);
}
}
print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),16);
// Show range
print_date_range($fields['ddate_start'],$fields['ddate_end']);
}
print '</td>';
// Total HT
if ($modetax == 0) {
print '<td class="nowrap" align="right">';
print price($fields['totalht']);
if (price2num($fields['ftotal_ttc'])) {
//print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
$ratiolineinvoice=($fields['dtotal_ttc']/$fields['ftotal_ttc']);
//print ' ('.round($ratiolineinvoice*100,2).'%)';
}
print '</td>';
}
// Payment
$ratiopaymentinvoice=1;
if ($modetax == 0) {
if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) {
$ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']);
}
print '<td class="nowrap" align="right">';
//print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc'];
if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
$payment_static->id=$fields['payment_id'];
print $payment_static->getNomUrl(2);
}
if ($type == 0) {
print $langs->trans("NotUsedForGoods");
} else {
print $fields['payment_amount'];
if (isset($fields['payment_amount'])) {
print ' ('.round($ratiopaymentinvoice*100,2).'%)';
}
}
print '</td>';
}
// Total collected
print '<td class="nowrap" align="right">';
$temp_ht=$fields['totalht'];
if ($type == 1) {
$temp_ht=$fields['totalht']*$ratiopaymentinvoice;
}
print price(price2num($temp_ht,'MT'),1);
print '</td>';
// VAT
print '<td class="nowrap" align="right">';
$temp_vat=$fields['vat'];
if ($type == 1) {
$temp_vat=$fields['vat']*$ratiopaymentinvoice;
}
print price(price2num($temp_vat,'MT'),1);
//print price($fields['vat']);
print '</td>';
print '</tr>';
$subtot_coll_total_ht += $temp_ht;
$subtot_coll_vat += $temp_vat;
$x_coll_sum += $temp_vat;
}
}
// Total customers for this vat rate
print '<tr class="liste_total">';
print '<td colspan="'.$span.'"></td>';
print '<td align="right">'.$langs->trans("Total").':</td>';
if ($modetax == 0) {
print '<td class="nowrap" align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>';
}
print '<td align="right">'.price(price2num($subtot_coll_total_ht,'MT')).'</td>';
print '<td class="nowrap" align="right">'.price(price2num($subtot_coll_vat,'MT')).'</td>';
print '</tr>';
}
if (count($x_coll) == 0) { // Show a total ine if nothing shown
print '<tr class="liste_total">';
print '<td colspan="'.$span.'"></td>';
print '<td align="right">'.$langs->trans("Total").':</td>';
if ($modetax == 0) {
print '<td class="nowrap" align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>';
}
print '<td align="right">'.price(price2num(0,'MT')).'</td>';
print '<td class="nowrap" align="right">'.price(price2num(0,'MT')).'</td>';
print '</tr>';
}
// Blank line
print '<tr><td colspan="'.($span+1).'">&nbsp;</td></tr>';
//print table headers for this quadri - expenses now
//imprime les en-tete de tables pour ce quadri - maintenant les d<>penses
print '<tr class="liste_titre">';
print '<td align="left">'.$elementsup.'</td>';
print '<td align="left">'.$langs->trans("Date").'</td>';
print '<td align="left">'.$namesup.'</td>';
print '<td align="left">'.$productsup.'</td>';
if ($modetax == 0) {
print '<td align="right">'.$amountsup.'</td>';
print '<td align="right">'.$langs->trans("Payment").' ('.$langs->trans("PercentOfInvoice").')</td>';
}
print '<td align="right">'.$langs->trans("AmountHTVATRealPaid").'</td>';
print '<td align="right">'.$vatsup.'</td>';
print '</tr>'."\n";
foreach (array_keys($x_paye) as $rate) {
$subtot_paye_total_ht = 0;
$subtot_paye_vat = 0;
if (is_array($x_both[$rate]['paye']['detail'])) {
$var=true;
print "<tr>";
print '<td class="tax_rate">'.$langs->trans("Rate").': '.vatrate($rate).'%</td><td colspan="'.$span.'"></td>';
print '</tr>'."\n";
foreach ($x_both[$rate]['paye']['detail'] as $index=>$fields) {
// Define type
$type=($fields['dtype']?$fields['dtype']:$fields['ptype']);
// Try to enhance type detection using date_start and date_end for free lines where type
// was not saved.
if (!empty($fields['ddate_start'])) {
$type=1;
}
if (!empty($fields['ddate_end'])) {
$type=1;
}
$var=!$var;
print '<tr '.$bc[$var].'>';
// Ref
print '<td class="nowrap" align="left">'.$fields['link'].'</td>';
// Invoice date
print '<td align="left">' . $fields['datef'] . '</td>';
// Company name
print '<td align="left">' . $fields['company_link'] . '</td>';
// Description
print '<td align="left">';
if ($fields['pid']) {
$product_static->id=$fields['pid'];
$product_static->ref=$fields['pref'];
$product_static->type=$fields['ptype'];
print $product_static->getNomUrl(1);
if (dol_string_nohtmltag($fields['descr'])) {
print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']),16);
}
} else {
if ($type) {
$text = img_object($langs->trans('Service'),'service');
} else {
$text = img_object($langs->trans('Product'),'product');
}
print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']),16);
// Show range
print_date_range($fields['ddate_start'],$fields['ddate_end']);
}
print '</td>';
// Total HT
if ($modetax == 0) {
print '<td class="nowrap" align="right">';
print price($fields['totalht']);
if (price2num($fields['ftotal_ttc'])) {
//print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
$ratiolineinvoice=($fields['dtotal_ttc']/$fields['ftotal_ttc']);
//print ' ('.round($ratiolineinvoice*100,2).'%)';
}
print '</td>';
}
// Payment
$ratiopaymentinvoice=1;
if ($modetax == 0) {
if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) {
$ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']);
}
print '<td class="nowrap" align="right">';
if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
$paymentfourn_static->id=$fields['payment_id'];
print $paymentfourn_static->getNomUrl(2);
}
if ($type == 0) {
print $langs->trans("NotUsedForGoods");
} else {
print $fields['payment_amount'];
if (isset($fields['payment_amount'])) {
print ' ('.round($ratiopaymentinvoice*100,2).'%)';
}
}
print '</td>';
}
// VAT paid
print '<td class="nowrap" align="right">';
$temp_ht=$fields['totalht'];
if ($type == 1) {
$temp_ht=$fields['totalht']*$ratiopaymentinvoice;
}
print price(price2num($temp_ht,'MT'),1);
print '</td>';
// VAT
print '<td class="nowrap" align="right">';
$temp_vat=$fields['vat'];
if ($type == 1) {
$temp_vat=$fields['vat']*$ratiopaymentinvoice;
}
print price(price2num($temp_vat,'MT'),1);
//print price($fields['vat']);
print '</td>';
print '</tr>';
$subtot_paye_total_ht += $temp_ht;
$subtot_paye_vat += $temp_vat;
$x_paye_sum += $temp_vat;
}
}
// Total suppliers for this vat rate
print '<tr class="liste_total">';
print '<td colspan="'.$span.'"></td>';
print '<td align="right">'.$langs->trans("Total").':</td>';
if ($modetax == 0) {
print '<td class="nowrap" align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>';
}
print '<td align="right">'.price(price2num($subtot_paye_total_ht,'MT')).'</td>';
print '<td class="nowrap" align="right">'.price(price2num($subtot_paye_vat,'MT')).'</td>';
print '</tr>';
}
if (count($x_paye) == 0) { // Show a total ine if nothing shown
print '<tr class="liste_total">';
print '<td colspan="'.$span.'"></td>';
print '<td align="right">'.$langs->trans("Total").':</td>';
if ($modetax == 0) {
print '<td class="nowrap" align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>';
}
print '<td align="right">'.price(price2num(0,'MT')).'</td>';
print '<td class="nowrap" align="right">'.price(price2num(0,'MT')).'</td>';
print '</tr>';
}
print '</table>';
// Total to pay
print '<br><br>';
print '<table class="noborder" width="100%">';
$diff = $x_coll_sum - $x_paye_sum;
print '<tr class="liste_total">';
print '<td class="liste_total" colspan="'.$span.'">'.$langs->trans("TotalToPay").($q?', '.$langs->trans("Quadri").' '.$q:'').'</td>';
print '<td class="liste_total nowrap" align="right"><b>'.price(price2num($diff,'MT'))."</b></td>\n";
print "</tr>\n";
$i++;
}
echo '</table>';
$db->close();
llxFooter();

View File

@@ -1254,10 +1254,11 @@ class Form
* @param string $morefilter Add more filters into sql request
* @param string $show_every 0=default list, 1=add also a value "Everybody" at beginning of list
* @param string $enableonlytext If option $enableonly is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty.
* @param string $morecss More css
* @return string HTML select string
* @see select_dolgroups
*/
function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='')
function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='', $morecss='')
{
global $conf,$user,$langs;
@@ -1339,7 +1340,7 @@ class Form
$nodatarole=($comboenhancement?' data-role="none"':'');
}
$out.= '<select class="flat minwidth200" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').$nodatarole.'>';
$out.= '<select class="flat minwidth200'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').$nodatarole.'>';
if ($show_empty) $out.= '<option value="-1"'.((empty($selected) || $selected==-1)?' selected':'').'>&nbsp;</option>'."\n";
if ($show_every) $out.= '<option value="-2"'.(($selected==-2)?' selected':'').'>-- '.$langs->trans("Everybody").' --</option>'."\n";
@@ -3167,6 +3168,18 @@ class Form
$i++;
}
}
else if ($input['type'] == 'date')
{
$more.='<tr><td>'.$input['label'].'</td>';
$more.='<td colspan="2" align="left">';
$more.=$this->select_date($input['value'],$input['name'],0,0,0,'',1,0,1);
$more.='</td></tr>'."\n";
$formquestion[] = array('name'=>$input['name'].'day');
$formquestion[] = array('name'=>$input['name'].'month');
$formquestion[] = array('name'=>$input['name'].'year');
$formquestion[] = array('name'=>$input['name'].'hour');
$formquestion[] = array('name'=>$input['name'].'min');
}
else if ($input['type'] == 'other')
{
$more.='<tr><td>';
@@ -4296,7 +4309,7 @@ class Form
$retstring.='</button> ';
}
}
if (! empty($nooutput)) return $retstring;
print $retstring;

View File

@@ -276,7 +276,8 @@ class FormMail extends Form
// Get message template
$model_id=0;
if (array_key_exists('models_id',$this->param)) {
if (array_key_exists('models_id',$this->param))
{
$model_id=$this->param["models_id"];
}
$arraydefaultmessage=$this->getEMailTemplate($this->db, $this->param["models"], $user, $outputlangs, $model_id);
@@ -295,23 +296,26 @@ class FormMail extends Form
}
$result = $this->fetchAllEMailTemplate($this->param["models"], $user, $outputlangs);
if ($result<0) {
if ($result<0)
{
setEventMessage($this->error,'errors');
}
$modelmail_array=array();
foreach($this->lines_model as $line) {
foreach($this->lines_model as $line)
{
$modelmail_array[$line->id]=$line->label;
}
if (count($modelmail_array)>0) {
$out.= '<table class="nobordernopadding" width="100%"><tr><td width="20%">'."\n";
// Zone to select its email template
if (count($modelmail_array)>0)
{
$out.= '<div style="padding: 3px 0 3px 0">'."\n";
$out.= $langs->trans('SelectMailModel').':'.$this->selectarray('modelmailselected', $modelmail_array,$model_id);
$out.= '</td>';
$out.= '<td width="5px">';
if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
$out.= '</td>';
$out.= '<td><input class="flat" type="submit" value="'.$langs->trans('Valid').'" name="modelselected" id="modelselected"></td>';
$out.= '</tr></table>';
$out.= ' &nbsp; ';
$out.= '<input class="button" type="submit" value="'.$langs->trans('Valid').'" name="modelselected" id="modelselected">';
$out.= ' &nbsp; ';
$out.= '</div>';
}

View File

@@ -361,9 +361,10 @@ class FormOther
* @param User $user Object user
* @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status
* @param int $showempty 1=show also an empty value
* @param string $morecss More CSS
* @return string Html combo list code
*/
function select_salesrepresentatives($selected,$htmlname,$user,$showstatus=0,$showempty=1)
function select_salesrepresentatives($selected,$htmlname,$user,$showstatus=0,$showempty=1,$morecss='')
{
global $conf,$langs;
$langs->load('users');
@@ -383,7 +384,7 @@ class FormOther
}
}
// Select each sales and print them in a select input
$out.='<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
$out.='<select class="flat'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
if ($showempty) $out.='<option value="0">&nbsp;</option>';
// Get list of users allowed to be viewed

View File

@@ -261,7 +261,7 @@ class FormProjets
*
* @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
* @param int $selected Id task preselected
* @param string $htmlname Nom de la zone html
* @param string $htmlname Name of HTML select
* @param int $maxlength Maximum length of label
* @param int $option_only Return only html options lines without the select tag
* @param int $show_empty Add an empty line
@@ -270,7 +270,7 @@ class FormProjets
* @param int $disabled Disabled
* @return int Nber of project if OK, <0 if KO
*/
function select_task($socid=-1, $selected='', $htmlname='taskid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0, $disabled=0)
function selectTasks($socid=-1, $selected='', $htmlname='taskid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0, $disabled=0)
{
global $user,$conf,$langs;
@@ -289,8 +289,11 @@ class FormProjets
}
// Search all projects
$sql = 'SELECT t.rowid, t.ref as tref, t.label as tlabel, p.ref, p.title, p.fk_soc, p.fk_statut, p.public';
$sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p, '.MAIN_DB_PREFIX.'projet_task as t';
$sql = 'SELECT t.rowid, t.ref as tref, t.label as tlabel, p.ref, p.title, p.fk_soc, p.fk_statut, p.public,';
$sql.= ' s.nom as name';
$sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = p.fk_soc';
$sql.= ', '.MAIN_DB_PREFIX.'projet_task as t';
$sql.= " WHERE p.entity = ".$conf->entity;
$sql.= " AND t.fk_projet = p.rowid";
if ($projectsListId !== false) $sql.= " AND p.rowid IN (".$projectsListId.")";
@@ -312,7 +315,7 @@ class FormProjets
$comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
$out.=$comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
$minmax='minwidth100';
$minmax='minwidth200';
}
if (empty($option_only)) {
@@ -346,6 +349,8 @@ class FormProjets
//else $labeltoshow.=' ('.$langs->trans("Private").')';
$labeltoshow.=' '.dol_trunc($obj->title,$maxlength);
if ($obj->name) $labeltoshow.=' ('.$obj->name.')';
$disabled=0;
if ($obj->fk_statut == 0)
{
@@ -512,7 +517,7 @@ class FormProjets
*
* @param string $htmlname HTML name
* @param int $preselected Preselected
* @param int $shwoempty Add an empty line
* @param int $showempty Add an empty line
* @param int $useshortlabel Use short label
* @return int|string The HTML select list of element or '' if nothing or -1 if KO
*/

View File

@@ -58,11 +58,12 @@ class Menu
* @param string $target Target lien
* @param string $mainmenu Main menu ('home', 'companies', 'products', ...)
* @param string $leftmenu Left menu ('setup', 'system', 'admintools', ...)
* @param int $position Position (not used yet)
* @return void
*/
function add($url, $titre, $level=0, $enabled=1, $target='',$mainmenu='',$leftmenu='')
function add($url, $titre, $level=0, $enabled=1, $target='',$mainmenu='',$leftmenu='',$position=0)
{
$this->liste[]=array('url'=>$url,'titre'=>$titre,'level'=>$level,'enabled'=>$enabled,'target'=>$target,'mainmenu'=>$mainmenu,'leftmenu'=>$leftmenu);
$this->liste[]=array('url'=>$url,'titre'=>$titre,'level'=>$level,'enabled'=>$enabled,'target'=>$target,'mainmenu'=>$mainmenu,'leftmenu'=>$leftmenu, 'position'=>$position);
}
/**
@@ -76,12 +77,13 @@ class Menu
* @param string $target Target lien
* @param string $mainmenu Main menu ('home', 'companies', 'products', ...)
* @param string $leftmenu Left menu ('setup', 'system', 'admintools', ...)
* @param int $position Position (not used yet)
* @return void
*/
function insert($idafter, $url, $titre, $level=0, $enabled=1, $target='',$mainmenu='',$leftmenu='')
function insert($idafter, $url, $titre, $level=0, $enabled=1, $target='',$mainmenu='',$leftmenu='',$position=0)
{
$array_start = array_slice($this->liste,0,($idafter+1));
$array_new = array(0=>array('url'=>$url,'titre'=>$titre,'level'=>$level,'enabled'=>$enabled,'target'=>$target,'mainmenu'=>$mainmenu,'leftmenu'=>$leftmenu));
$array_new = array(0=>array('url'=>$url,'titre'=>$titre,'level'=>$level,'enabled'=>$enabled,'target'=>$target,'mainmenu'=>$mainmenu,'leftmenu'=>$leftmenu,'position'=>$position));
$array_end = array_slice($this->liste,($idafter+1));
$this->liste=array_merge($array_start,$array_new,$array_end);
}

View File

@@ -95,6 +95,7 @@ class Menubase
$this->perms=trim($this->perms);
$this->enabled=trim($this->enabled);
$this->user=trim($this->user);
$this->position=trim($this->position);
if (! $this->level) $this->level=0;
// Check parameters

View File

@@ -57,7 +57,8 @@ function showDP(base,dateFieldID,format,codelang)
showDP.box=document.createElement("div");
showDP.box.className="bodyline";
showDP.box.style.siplay="block";
showDP.box.style.display="block";
showDP.box.style.zIndex="1000";
showDP.box.style.position="absolute";
showDP.box.style.top=thetop + "px";
showDP.box.style.left=theleft + "px";

View File

@@ -2901,11 +2901,11 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
* @param string $file Page URL (in most cases provided with $_SERVER["PHP_SELF"])
* @param string $options Other url paramaters to propagate ("" by default)
* @param integer $nextpage Do we show a next page button
* @param string $betweenarrows HTML content to show between arrows. Must contains '<li> </li>' tags.
* @param string $betweenarrows HTML content to show between arrows. MUST contains '<li> </li>' tags or '<li><span> </span></li>'.
* @param string $afterarrows HTML content to show after arrows. Must NOT contains '<li> </li>' tags.
* @return void
*/
function print_fleche_navigation($page,$file,$options='',$nextpage=0,$betweenarrows='',$afterarrows='')
function print_fleche_navigation($page, $file, $options='', $nextpage=0, $betweenarrows='', $afterarrows='')
{
global $conf, $langs;
@@ -2915,8 +2915,10 @@ function print_fleche_navigation($page,$file,$options='',$nextpage=0,$betweenarr
if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationprevious" href="'.$file.'?page='.($page-1).$options.'"><</a></li>';
else print '<li><a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$file.'?page='.($page-1).$options.'">'.$langs->trans("Previous").'</a></li>';
}
//if ($betweenarrows) print ($page > 0?' ':'').$betweenarrows.($nextpage>0?' ':'');
print $betweenarrows;
if ($betweenarrows)
{
print $betweenarrows;
}
if ($nextpage > 0)
{
if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationnext" href="'.$file.'?page='.($page+1).$options.'">></a></li>';

View File

@@ -24,18 +24,18 @@
/**
* Show header of a VAT report
* Show header of a VAT report
*
* @param string $nom Name of report
* @param string $variante Link for alternate report
* @param string $period Period of report
* @param string $periodlink Link to switch period
* @param string $description Description
* @param timestamp|integer $builddate Date generation
* @param string $exportlink Link for export or ''
* @param array $moreparam Array with list of params to add into form
* @param string $calcmode Calculation mode
* @return void
* @param string $nom Name of report
* @param string $variante Link for alternate report
* @param string $period Period of report
* @param string $periodlink Link to switch period
* @param string $description Description
* @param timestamp|integer $builddate Date generation
* @param string $exportlink Link for export or ''
* @param array $moreparam Array with list of params to add into form
* @param string $calcmode Calculation mode
* @return void
*/
function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='')
{
@@ -55,7 +55,7 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
foreach($moreparam as $key => $value)
{
print '<input type="hidden" name="'.$key.'" value="'.$value.'">';
print '<input type="hidden" name="'.$key.'" value="'.$value.'">';
}
print '<table width="100%" class="border">';

View File

@@ -280,10 +280,11 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
$sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,";
$sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, ";
$sql.= " d.date_start as date_start, d.date_end as date_end,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
$sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " 0 as payment_id, 0 as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity;
@@ -291,6 +292,7 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)";
else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
if ($y && $m)
{
$sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'";
@@ -325,10 +327,11 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
$sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,";
$sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, ";
$sql.= " d.date_start as date_start, d.date_end as date_end,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef as date_f, s.nom as company_name, s.rowid as company_id,";
$sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " 0 as payment_id, 0 as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity;
@@ -336,6 +339,7 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)";
else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
if ($y && $m)
{
$sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'";
@@ -384,6 +388,9 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
}
$list[$assoc['rate']]['dtotal_ttc'][] = $assoc['total_ttc'];
$list[$assoc['rate']]['dtype'][] = $assoc['dtype'];
$list[$assoc['rate']]['datef'][] = $assoc['datef'];
$list[$assoc['rate']]['company_name'][] = $assoc['company_name'];
$list[$assoc['rate']]['company_id'][] = $assoc['company_id'];
$list[$assoc['rate']]['ddate_start'][] = $db->jdate($assoc['date_start']);
$list[$assoc['rate']]['ddate_end'][] = $db->jdate($assoc['date_end']);
@@ -438,10 +445,11 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
$sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,";
$sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, ";
$sql.= " d.date_start as date_start, d.date_end as date_end,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
$sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " 0 as payment_id, 0 as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity;
@@ -449,6 +457,7 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)";
else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
if ($y && $m)
{
$sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'";
@@ -484,12 +493,13 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
$sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,";
$sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, ";
$sql.= " d.date_start as date_start, d.date_end as date_end,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,";
$sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
$sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,";
$sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity;
@@ -497,6 +507,7 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)";
else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
$sql.= " AND pf.".$fk_facture2." = f.rowid";
$sql.= " AND pa.rowid = pf.".$fk_payment;
if ($y && $m)
@@ -548,6 +559,9 @@ function vat_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction,
}
$list[$assoc['rate']]['dtotal_ttc'][] = $assoc['total_ttc'];
$list[$assoc['rate']]['dtype'][] = $assoc['dtype'];
$list[$assoc['rate']]['datef'][] = $assoc['datef'];
$list[$assoc['rate']]['company_name'][] = $assoc['company_name'];
$list[$assoc['rate']]['company_id'][] = $assoc['company_id'];
$list[$assoc['rate']]['ddate_start'][] = $db->jdate($assoc['date_start']);
$list[$assoc['rate']]['ddate_end'][] = $db->jdate($assoc['date_end']);

View File

@@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php';
* @param DoliDB $db Database handler
* @param string $atarget Target (Example: '' or '_top')
* @param int $type_user 0=Menu for backoffice, 1=Menu for front office
* @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty)
* @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty)
* @param array $menu Object Menu to return back list of menu entries
* @param int $noout Disable output (Initialise &$menu only).
* @return int 0
@@ -732,9 +732,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
if (! empty($conf->ficheinter->enabled))
{
$langs->load("interventions");
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("Interventions"), 0, $user->rights->ficheinter->lire, '', $mainmenu, 'ficheinter');
$newmenu->add("/fichinter/card.php?action=create&amp;leftmenu=ficheinter", $langs->trans("NewIntervention"), 1, $user->rights->ficheinter->creer);
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("List"), 1, $user->rights->ficheinter->lire);
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("Interventions"), 0, $user->rights->ficheinter->lire, '', $mainmenu, 'ficheinter', 200);
$newmenu->add("/fichinter/card.php?action=create&amp;leftmenu=ficheinter", $langs->trans("NewIntervention"), 1, $user->rights->ficheinter->creer, '', '', '', 201);
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("List"), 1, $user->rights->ficheinter->lire, '', '', '', 202);
}
}

View File

@@ -1000,7 +1000,18 @@ print $sql;
$i=0;
foreach ($this->tabs as $key => $value)
{
if ($value)
if (is_array($value) && count($value) == 0) continue; // Discard empty arrays
$entity=$conf->entity;
$newvalue = $value;
if (is_array($value))
{
$newvalue = $value['data'];
if (isset($value['entity'])) $entity = $value['entity'];
}
if ($newvalue)
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."const (";
$sql.= "name";
@@ -1370,10 +1381,11 @@ print $sql;
$menu->target=$this->menu[$key]['target'];
$menu->user=$this->menu[$key]['user'];
$menu->enabled=isset($this->menu[$key]['enabled'])?$this->menu[$key]['enabled']:0;
$menu->position=$this->menu[$key]['position'];
if (! $err)
{
$result=$menu->create($user);
$result=$menu->create($user); // Save menu entry into table llx_menu
if ($result > 0)
{
$this->menu[$key]['rowid']=$result;

View File

@@ -148,7 +148,8 @@ class modAskPriceSupplier extends DolibarrModules
'langs'=>'askpricesupplier', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
'enabled'=>'$conf->askpricesupplier->enabled', // 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.
'perms'=>'$user->rights->askpricesupplier->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules
'user'=>2 // 0=Menu for internal users, 1=external users, 2=both
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
'position'=>30
);
$r++;
@@ -160,7 +161,8 @@ class modAskPriceSupplier extends DolibarrModules
'langs'=>'askpricesupplier',
'enabled'=>'$conf->askpricesupplier->enabled',
'perms'=>'$user->rights->askpricesupplier->creer',
'user'=>2
'user'=>2,
'position'=>31
);
$r++;
@@ -172,7 +174,8 @@ class modAskPriceSupplier extends DolibarrModules
'langs'=>'askpricesupplier',
'enabled'=>'$conf->askpricesupplier->enabled',
'perms'=>'$user->rights->askpricesupplier->lire',
'user'=>2
'user'=>2,
'position'=>32
);
$r++;
}

View File

@@ -75,6 +75,8 @@
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
<input type="hidden" name="action" value="add">
<?php dol_fiche_head(); ?>
<table summary="listofattributes" class="border centpercent">
<!-- Label -->
<tr><td class="fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo GETPOST('label'); ?>"></td></tr>
@@ -121,7 +123,9 @@
<?php } ?>
</table>
<div align="center"><br><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>"> &nbsp;
<?php dol_fiche_end(); ?>
<div align="center"><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="button" class="button" value="<?php echo $langs->trans("Cancel"); ?>"></div>
</form>

View File

@@ -46,6 +46,8 @@
<input type="hidden" name="action" value="update">
<input type="hidden" name="rowid" value="<?php echo $rowid ?>">
<?php dol_fiche_head(); ?>
<table summary="listofattributes" class="border centpercent">
<?php
@@ -123,7 +125,9 @@ if(($type == 'select') || ($type == 'sellist') || ($type == 'checkbox') || ($typ
<?php } ?>
</table>
<div align="center"><br><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>"> &nbsp;
<?php dol_fiche_end(); ?>
<div align="center"><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="button" class="button" value="<?php echo $langs->trans("Cancel"); ?>"></div>
</form>

View File

@@ -1561,8 +1561,11 @@ else if ($id || $ref)
$file=$fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans('SendShippingByEMail'));
print_fiche_titre($langs->trans('SendShippingByEMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@@ -1638,7 +1641,7 @@ else if ($id || $ref)
// Show form
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
if ($action != 'presend' && ! empty($origin) && $object->$origin->id)

File diff suppressed because it is too large Load Diff

View File

@@ -245,16 +245,21 @@ if ($resql)
$total_total_ht = 0;
$total_total_ttc = 0;
$total_total_tva = 0;
$expensereportstatic=new ExpenseReport($db);
if($num > 0)
{
while ($i < min($num,$limit))
{
$objp = $db->fetch_object($resql);
$expensereportstatic->id=$objp->rowid;
$expensereportstatic->ref=$objp->ref;
$var=!$var;
print "<tr ".$bc[$var].">";
print '<td><a href="card.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowTrip"),"trip").' '.$objp->ref.'</a></td>';
print '<td>'.$expensereportstatic->getNomUrl(1).'</td>';
print '<td align="center">'.($objp->date_debut > 0 ? dol_print_date($objp->date_debut, 'day') : '').'</td>';
print '<td align="center">'.($objp->date_fin > 0 ? dol_print_date($objp->date_fin, 'day') : '').'</td>';
print '<td align="left"><a href="'.DOL_URL_ROOT.'/user/card.php?id='.$objp->id_user.'">'.img_object($langs->trans("ShowUser"),"user").' '.dolGetFirstLastname($objp->firstname, $objp->lastname).'</a></td>';

View File

@@ -1795,8 +1795,11 @@ else if ($id > 0 || ! empty($ref))
$file=$fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans('SendInterventionByMail'));
print_fiche_titre($langs->trans('SendInterventionByMail'));
dol_fiche_head('');
// Create form object
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@@ -1860,7 +1863,7 @@ else if ($id > 0 || ! empty($ref))
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
}

View File

@@ -504,39 +504,41 @@ class FactureFournisseur extends CommonInvoice
{
$obj = $this->db->fetch_object($resql_rows);
$this->lines[$i] = new SupplierInvoiceLine($this->db);
$line = new SupplierInvoiceLine($this->db);
$this->lines[$i]->id = $obj->rowid;
$this->lines[$i]->rowid = $obj->rowid;
$this->lines[$i]->description = $obj->description;
$this->lines[$i]->product_ref = $obj->product_ref; // Internal reference
$this->lines[$i]->ref = $obj->product_ref; // deprecated.
$this->lines[$i]->ref_supplier = $obj->ref_supplier; // Reference product supplier TODO Rename field ref to ref_supplier into table llx_facture_fourn_det and llx_commande_fournisseurdet and update fields it into updateline
$this->lines[$i]->libelle = $obj->label; // Deprecated
$this->lines[$i]->label = $obj->label; // This field may contains label of product (when invoice create from order)
$this->lines[$i]->product_desc = $obj->product_desc; // Description du produit
$this->lines[$i]->subprice = $obj->pu_ht;
$this->lines[$i]->pu_ht = $obj->pu_ht;
$this->lines[$i]->pu_ttc = $obj->pu_ttc;
$this->lines[$i]->tva_tx = $obj->tva_tx;
$this->lines[$i]->localtax1_tx = $obj->localtax1_tx;
$this->lines[$i]->localtax2_tx = $obj->localtax2_tx;
$this->lines[$i]->qty = $obj->qty;
$this->lines[$i]->remise_percent = $obj->remise_percent;
$this->lines[$i]->tva = $obj->total_tva;
$this->lines[$i]->total_ht = $obj->total_ht;
$this->lines[$i]->total_tva = $obj->total_tva;
$this->lines[$i]->total_localtax1 = $obj->total_localtax1;
$this->lines[$i]->total_localtax2 = $obj->total_localtax2;
$this->lines[$i]->total_ttc = $obj->total_ttc;
$this->lines[$i]->fk_product = $obj->fk_product;
$this->lines[$i]->product_type = $obj->product_type;
$this->lines[$i]->product_label = $obj->label;
$this->lines[$i]->info_bits = $obj->info_bits;
$this->lines[$i]->fk_parent_line = $obj->fk_parent_line;
$this->lines[$i]->special_code = $obj->special_code;
$this->lines[$i]->rang = $obj->rang;
$this->lines[$i]->fk_unit = $obj->fk_unit;
$line->id = $obj->rowid;
$line->rowid = $obj->rowid;
$line->description = $obj->description;
$line->product_ref = $obj->product_ref;
$line->ref = $obj->product_ref;
$line->ref_supplier = $obj->ref_supplier;
$line->libelle = $obj->label;
$line->label = $obj->label;
$line->product_desc = $obj->product_desc;
$line->subprice = $obj->pu_ht;
$line->pu_ht = $obj->pu_ht;
$line->pu_ttc = $obj->pu_ttc;
$line->tva_tx = $obj->tva_tx;
$line->localtax1_tx = $obj->localtax1_tx;
$line->localtax2_tx = $obj->localtax2_tx;
$line->qty = $obj->qty;
$line->remise_percent = $obj->remise_percent;
$line->tva = $obj->total_tva;
$line->total_ht = $obj->total_ht;
$line->total_tva = $obj->total_tva;
$line->total_localtax1 = $obj->total_localtax1;
$line->total_localtax2 = $obj->total_localtax2;
$line->total_ttc = $obj->total_ttc;
$line->fk_product = $obj->fk_product;
$line->product_type = $obj->product_type;
$line->product_label = $obj->label;
$line->info_bits = $obj->info_bits;
$line->fk_parent_line = $obj->fk_parent_line;
$line->special_code = $obj->special_code;
$line->rang = $obj->rang;
$line->fk_unit = $obj->fk_unit;
$this->lines[$i] = $line;
$i++;
}
@@ -1368,53 +1370,25 @@ class FactureFournisseur extends CommonInvoice
*/
function deleteline($rowid, $notrigger=0)
{
global $user, $langs, $conf;
if (! $rowid) $rowid=$this->id;
dol_syslog(get_class($this)."::delete rowid=".$rowid, LOG_DEBUG);
$error=0;
$this->db->begin();
if (! $error && ! $notrigger)
{
// Call trigger
$result=$this->call_trigger('LINEBILL_SUPPLIER_DELETE',$user);
if ($result < 0) $error++;
// End call triggers
if (!$rowid) {
$rowid = $this->id;
}
if (! $error)
{
// Supprime ligne
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det ';
$sql.= ' WHERE rowid = '.$rowid;
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$resql = $this->db->query($sql);
if (! $resql)
{
$error++;
$this->error=$this->db->lasterror();
}
}
$line = new SupplierInvoiceLine($this->db);
if (! $error)
{
// Mise a jour prix facture
$result=$this->update_price();
}
if ($line->fetch($rowid) < 1) {
return -1;
}
if (! $error)
{
$this->db->commit();
return 1;
}
else
{
$this->db->rollback();
return -1;
}
$res = $line->delete($notrigger);
if ($res < 1) {
$this->errors[] = $line->error;
} else {
$res = $this->update_price();
}
return $res;
}
@@ -1905,13 +1879,26 @@ class SupplierInvoiceLine extends CommonObjectLine
* @see product_ref
*/
public $ref;
/**
* Internal ref
* @var string
*/
public $product_ref;
/**
* Reference product supplier
* TODO Rename field ref to ref_supplier into table llx_facture_fourn_det and llx_commande_fournisseurdet and update fields it into updateline
* @var string
*/
public $ref_supplier;
/**
* @deprecated
* @see label
*/
public $libelle;
/**
* Product description
* @var string
*/
public $product_desc;
/**
@@ -1946,6 +1933,7 @@ class SupplierInvoiceLine extends CommonObjectLine
/**
* Product label
* This field may contains label of product (when invoice create from order)
* @var string
*/
var $label;
@@ -1968,6 +1956,24 @@ class SupplierInvoiceLine extends CommonObjectLine
*/
public $fk_prev_id;
public $tva_tx;
public $localtax1_tx;
public $localtax2_tx;
public $qty;
public $remise_percent;
public $total_ht;
public $total_ttc;
public $total_localtax1;
public $total_localtax2;
public $fk_product;
public $product_type;
public $product_label;
public $info_bits;
public $fk_parent_line;
public $special_code;
public $rang;
/**
* Constructor
*
@@ -1978,6 +1984,116 @@ class SupplierInvoiceLine extends CommonObjectLine
$this->db= $db;
}
/**
* Retrieves a supplier invoice line
*
* @param int $rowid Line id
* @return int <0 KO; 0 NOT FOUND; 1 OK
*/
public function fetch($rowid)
{
$sql = 'SELECT f.rowid, f.ref as ref_supplier, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx';
$sql.= ', f.localtax1_tx, f.localtax2_tx, f.total_localtax1, f.total_localtax2 ';
$sql.= ', f.total_ht, f.tva as total_tva, f.total_ttc, f.fk_product, f.product_type, f.info_bits, f.rang, f.special_code, f.fk_parent_line, f.fk_unit';
$sql.= ', p.rowid as product_id, p.ref as product_ref, p.label as label, p.description as product_desc';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn_det as f';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON f.fk_product = p.rowid';
$sql.= ' WHERE rowid = '.$rowid;
$sql.= ' ORDER BY f.rang, f.rowid';
$query = $this->db->query($sql);
if (!$query) {
$this->errors[] = $this->db->error();
return -1;
}
if (!$this->db->num_rows($query)) {
return 0;
}
$obj = $this->db->fetch_object($query);
$this->id = $obj->rowid;
$this->rowid = $obj->rowid;
$this->description = $obj->description;
$this->product_ref = $obj->product_ref;
$this->ref = $obj->product_ref;
$this->ref_supplier = $obj->ref_supplier;
$this->libelle = $obj->label;
$this->label = $obj->label;
$this->product_desc = $obj->product_desc;
$this->subprice = $obj->pu_ht;
$this->pu_ht = $obj->pu_ht;
$this->pu_ttc = $obj->pu_ttc;
$this->tva_tx = $obj->tva_tx;
$this->localtax1_tx = $obj->localtax1_tx;
$this->localtax2_tx = $obj->localtax2_tx;
$this->qty = $obj->qty;
$this->remise_percent = $obj->remise_percent;
$this->tva = $obj->total_tva;
$this->total_ht = $obj->total_ht;
$this->total_tva = $obj->total_tva;
$this->total_localtax1 = $obj->total_localtax1;
$this->total_localtax2 = $obj->total_localtax2;
$this->total_ttc = $obj->total_ttc;
$this->fk_product = $obj->fk_product;
$this->product_type = $obj->product_type;
$this->product_label = $obj->label;
$this->info_bits = $obj->info_bits;
$this->fk_parent_line = $obj->fk_parent_line;
$this->special_code = $obj->special_code;
$this->rang = $obj->rang;
$this->fk_unit = $obj->fk_unit;
return 1;
}
/**
* Deletes a line
*
* @param bool|int $notrigger
* @return int -1 KO; 1 OK
*/
public function delete($notrigger = 0)
{
global $user;
dol_syslog(get_class($this)."::deleteline rowid=".$this->id, LOG_DEBUG);
$error = 0;
$this->db->begin();
if (!$notrigger) {
if ($this->call_trigger('LINEBILL_SUPPLIER_DELETE',$user) < 0) {
$error++;
}
}
if (!$error) {
// Supprime ligne
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det ';
$sql .= ' WHERE rowid = '.$this->id;
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$resql = $this->db->query($sql);
if (!$resql) {
$error++;
$this->error = $this->db->lasterror();
}
}
if (! $error)
{
$this->db->commit();
return 1;
}
else
{
$this->db->rollback();
return -1;
}
}
}

View File

@@ -1754,7 +1754,7 @@ elseif (! empty($object->id))
*/
if ($action == 'commande')
{
$date_com = dol_mktime(0,0,0,$_POST["remonth"],$_POST["reday"],$_POST["reyear"]);
$date_com = dol_mktime(GETPOST('rehour'),GETPOST('remin'),GETPOST('resec'),GETPOST("remonth"),GETPOST("reday"),GETPOST("reyear"));
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id."&datecommande=".$date_com."&methode=".$_POST["methodecommande"]."&comment=".urlencode($_POST["comment"]), $langs->trans("MakeOrder"),$langs->trans("ConfirmMakeOrder",dol_print_date($date_com,'day')),"confirm_commande",'',0,2);
}
@@ -2296,9 +2296,11 @@ elseif (! empty($object->id))
$file=$fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_fiche_titre($langs->trans('SendOrderByMail'));
print_titre($langs->trans('SendOrderByMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@@ -2367,7 +2369,7 @@ elseif (! empty($object->id))
// Show form
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
/*
* Action webservice

View File

@@ -2313,6 +2313,11 @@ else
print '<div class="tabsAction">';
$parameters = array();
$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been
// modified by hook
if (empty($reshook)) {
// Modify a validated invoice with no payments
if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $action != 'edit' && $object->getSommePaiement() == 0 && $user->rights->fournisseur->facture->creer)
{
@@ -2432,6 +2437,7 @@ else
print '</div></div></div>';
//print '</td></tr></table>';
}
}
}
/*
* Show mail form
@@ -2474,8 +2480,11 @@ else
$file=$fileparams['fullname'];
}
print '<div class="clearboth"></div>';
print '<br>';
print_titre($langs->trans('SendBillByMail'));
print_fiche_titre($langs->trans('SendBillByMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@@ -2539,7 +2548,7 @@ else
// Show form
print $formmail->get_form();
print '<br>';
dol_fiche_end();
}
}
}

View File

@@ -886,9 +886,10 @@ if ($step == 4 && $datatoimport)
if ($objimport->array_import_convertvalue[0][$code]['rule']=='fetchidfromcodeid') $htmltext.=$langs->trans("DataComeFromIdFoundFromCodeId",$filecolumn,$langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).'<br>';
}
}
// Source required
$htmltext.=$langs->trans("SourceRequired").': <b>'.yn(preg_match('/\*$/',$label)).'</b><br>';
$example=$objimport->array_import_examplevalues[0][$code];
// Example
if (empty($objimport->array_import_convertvalue[0][$code])) // If source file does not need convertion
{
if ($example) $htmltext.=$langs->trans("SourceExample").': <b>'.$example.'</b><br>';
@@ -898,6 +899,11 @@ if ($step == 4 && $datatoimport)
if ($objimport->array_import_convertvalue[0][$code]['rule']=='fetchidfromref') $htmltext.=$langs->trans("SourceExample").': <b>'.$langs->transnoentitiesnoconv("ExampleAnyRefFoundIntoElement",$entitylang).($example?' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')':'').'</b><br>';
if ($objimport->array_import_convertvalue[0][$code]['rule']=='fetchidfromcodeid') $htmltext.=$langs->trans("SourceExample").': <b>'.$langs->trans("ExampleAnyCodeOrIdFoundIntoDictionary",$langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).($example?' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')':'').'</b><br>';
}
// Format control rule
if (! empty($objimport->array_import_regex[0][$code]))
{
$htmltext.=$langs->trans("FormatControlRule").': <b>'.$objimport->array_import_regex[0][$code].'</b><br>';
}
$htmltext.='<br>';
// Target field info
$htmltext.='<b><u>'.$langs->trans("FieldTarget").'</u></b><br>';

View File

@@ -489,11 +489,11 @@ IMG;
$name=preg_replace('/\.odt/i', '', $name);
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT))
{
$command = $conf->global->MAIN_DOL_SCRIPTS_ROOT.'/scripts/odt2pdf/odt2pdf.sh '.$name.' '.(is_numeric($conf->global->MAIN_ODT_AS_PDF)?'jodconverter':$conf->global->MAIN_ODT_AS_PDF);
$command = $conf->global->MAIN_DOL_SCRIPTS_ROOT.'/scripts/odt2pdf/odt2pdf.sh '.escapeshellcmd($name).' '.(is_numeric($conf->global->MAIN_ODT_AS_PDF)?'jodconverter':$conf->global->MAIN_ODT_AS_PDF);
}
else
{
$command = '../../scripts/odt2pdf/odt2pdf.sh '.$name.' '.(is_numeric($conf->global->MAIN_ODT_AS_PDF)?'jodconverter':$conf->global->MAIN_ODT_AS_PDF);
$command = '../../scripts/odt2pdf/odt2pdf.sh '.escapeshellcmd($name).' '.(is_numeric($conf->global->MAIN_ODT_AS_PDF)?'jodconverter':$conf->global->MAIN_ODT_AS_PDF);
}

View File

@@ -227,3 +227,6 @@ update llx_facturedet set product_type = 1 where product_type = 2;
delete from llx_commande_fournisseur_dispatch where fk_commandefourndet = 0 or fk_commandefourndet IS NULL;
delete from llx_menu where menu_handler = 'smartphone';

View File

@@ -429,8 +429,8 @@ Module20Name=مقترحات
Module20Desc=مقترحات تجارية إدارة
Module22Name=كتلة بالبريد الإلكتروني
Module22Desc=البريد الإلكتروني الدمار إدارة
Module23Name= طاقة
Module23Desc= مراقبة استهلاك الطاقة
Module23Name=طاقة
Module23Desc=مراقبة استهلاك الطاقة
Module25Name=طلبات الزبائن
Module25Desc=طلبات الزبائن إدارة
Module30Name=فواتير
@@ -492,7 +492,7 @@ Module400Desc=Management of projects, opportunities or leads. You can then assig
Module410Name=Webcalendar
Module410Desc=Webcalendar التكامل
Module500Name=Special expenses
Module500Desc=Management of special expenses (taxes, social contribution, dividends)
Module500Desc=Management of special expenses (taxes, social or fiscal taxes, dividends)
Module510Name=Salaries
Module510Desc=Management of employees salaries and payments
Module520Name=Loan
@@ -501,7 +501,7 @@ Module600Name=الإخطارات
Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
Module700Name=التبرعات
Module700Desc=التبرعات إدارة
Module770Name=Expense Report
Module770Name=Expense reports
Module770Desc=Management and claim expense reports (transportation, meal, ...)
Module1120Name=Supplier commercial proposal
Module1120Desc=Request supplier commercial proposal and prices
@@ -579,7 +579,7 @@ Permission32=إنشاء / تعديل المنتجات
Permission34=حذف المنتجات
Permission36=انظر / إدارة المنتجات المخفية
Permission38=منتجات التصدير
Permission41=قراءة المشاريع والمهام
Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet)
Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع
Permission44=حذف مشاريع
Permission61=قراءة التدخلات
@@ -600,10 +600,10 @@ Permission86=إرسال أوامر العملاء
Permission87=وثيقة أوامر العملاء
Permission88=إلغاء أوامر العملاء
Permission89=حذف أوامر العملاء
Permission91=قراءة المساهمات الاجتماعية وضريبة القيمة المضافة
Permission92=إنشاء / تعديل المساهمات الاجتماعية وضريبة القيمة المضافة
Permission93=حذف المساهمات الاجتماعية وضريبة القيمة المضافة
Permission94=تصدير المساهمات الاجتماعية
Permission91=Read social or fiscal taxes and vat
Permission92=Create/modify social or fiscal taxes and vat
Permission93=Delete social or fiscal taxes and vat
Permission94=Export social or fiscal taxes
Permission95=قراءة تقارير
Permission101=قراءة الإرسال
Permission102=إنشاء / تعديل الإرسال
@@ -621,9 +621,9 @@ Permission121=قراءة الغير مرتبطة المستخدم
Permission122=إنشاء / تغيير الغير مرتبطة المستخدم
Permission125=حذف الغير مرتبطة المستخدم
Permission126=الصادرات الغير
Permission141=المهام اقرأ
Permission142=إنشاء / تعديل المهام
Permission144=حذف المهام
Permission141=Read all projects and tasks (also private projects i am not contact for)
Permission142=Create/modify all projects and tasks (also private projects i am not contact for)
Permission144=Delete all projects and tasks (also private projects i am not contact for)
Permission146=قراءة موفري
Permission147=قراءة احصائيات
Permission151=قراءة أوامر دائمة
@@ -801,7 +801,7 @@ DictionaryCountry=Countries
DictionaryCurrency=Currencies
DictionaryCivility=Civility title
DictionaryActions=Type of agenda events
DictionarySocialContributions=Social contributions types
DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps
DictionaryPaymentConditions=Payment terms
@@ -820,6 +820,7 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units
DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves
SetupSaved=الإعداد المحفوظة
BackToModuleList=العودة إلى قائمة الوحدات
BackToDictionaryList=Back to dictionaries list
@@ -1510,7 +1511,7 @@ ConfirmDeleteMenu=هل أنت متأكد من أنك تريد حذف القائ
DeleteLine=حذف السطر
ConfirmDeleteLine=هل أنت متأكد من أنك تريد حذف هذا الخط؟
##### Tax #####
TaxSetup=الضرائب والمساهمات الاجتماعية والأرباح وحدة الإعداد
TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=ضريبة القيمة المضافة المستحقة
OptionVATDefault=Cash basis
OptionVATDebitOption=Accrual basis
@@ -1564,9 +1565,11 @@ 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
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
ApiKey=Key for API
##### Bank #####
BankSetupModule=إعداد وحدة مصرفية
FreeLegalTextOnChequeReceipts=نص حر على الشيكات والإيصالات
@@ -1596,6 +1599,7 @@ ProjectsSetup=مشروع إعداد وحدة
ProjectsModelModule=المشروع نموذج التقرير وثيقة
TasksNumberingModules=Tasks numbering module
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
@@ -1640,3 +1644,9 @@ ConfFileMuseContainCustom=Installing an external module from application save th
HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
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
TopMenuBackgroundColor=Background color for Top menu
LeftMenuBackgroundColor=Background color for Left menu
BackgroundTableTitleColor=Background color for table title line
BackgroundTableLineOddColor=Background color for odd table lines
BackgroundTableLineEvenColor=Background color for even table lines

View File

@@ -55,7 +55,6 @@ OrderBilledInDolibarr=Order %s classified billed
OrderApprovedInDolibarr=تم الموافقة على %s من الطلب
OrderRefusedInDolibarr=Order %s refused
OrderBackToDraftInDolibarr=الطلب %s للذهاب بها إلى حالة المسودة
OrderCanceledInDolibarr=تم إلغاء %s من الطلب
ProposalSentByEMail=تم إرسال العرض الرسمي %s بواسطة البريد الإلكتروني
OrderSentByEMail=تم إرسال طلبية العميل %s بواسطة البريد الإلكتروني
InvoiceSentByEMail=تم إرسال فاتروة العميل %s بواسطة البريد الإلكتروني
@@ -96,3 +95,5 @@ AddEvent=Create event
MyAvailability=My availability
ActionType=Event type
DateActionBegin=Start event date
CloneAction=Clone event
ConfirmCloneEvent=Are you sure you want to clone the event <b>%s</b> ?

View File

@@ -113,7 +113,7 @@ CustomerInvoicePayment=عملاء الدفع
CustomerInvoicePaymentBack=Customer payment back
SupplierInvoicePayment=المورد الدفع
WithdrawalPayment=انسحاب الدفع
SocialContributionPayment=دفع المساهمة الاجتماعية
SocialContributionPayment=Social/fiscal tax payment
FinancialAccountJournal=مجلة الحساب المالي
BankTransfer=حوالة مصرفية
BankTransfers=التحويلات المصرفية

View File

@@ -178,7 +178,7 @@ NumberOfBills=ملاحظة : من الفواتير
NumberOfBillsByMonth=ملحوظة من الفواتير من قبل شهر
AmountOfBills=مبلغ الفواتير
AmountOfBillsByMonthHT=كمية من الفواتير من قبل شهر (بعد خصم الضرائب)
ShowSocialContribution=وتظهر مساهمة الاجتماعية
ShowSocialContribution=Show social/fiscal tax
ShowBill=وتظهر الفاتورة
ShowInvoice=وتظهر الفاتورة
ShowInvoiceReplace=وتظهر استبدال الفاتورة
@@ -270,7 +270,7 @@ BillAddress=مشروع قانون معالجة
HelpEscompte=هذا الخصم هو الخصم الممنوح للعميل لأن الدفع قبل البعيد.
HelpAbandonBadCustomer=هذا المبلغ قد تم التخلي عنها (وذكر أن العملاء سيئة العملاء) ، ويعتبر أحد exceptionnal فضفاضة.
HelpAbandonOther=هذا المبلغ قد تم التخلي عنها لأنها كانت خطأ (خطأ أو فاتورة العميل أي بعبارة أخرى على سبيل المثال)
IdSocialContribution=المساهمة الاجتماعية معرف
IdSocialContribution=Social/fiscal tax payment id
PaymentId=دفع معرف
InvoiceId=فاتورة معرف
InvoiceRef=المرجع الفاتورة.

View File

@@ -30,6 +30,7 @@ ThirdPartyContact=طرف ثالث اتصال
StatusContactValidated=مركز الاتصال
Company=شركة
CompanyName=اسم الشركة
AliasNames=Alias names (commercial, trademark, ...)
Companies=الشركات
CountryIsInEEC=البلد داخل المجموعة الاقتصادية الأوروبية
ThirdPartyName=اسم طرف ثالث

View File

@@ -56,23 +56,23 @@ VATCollected=جمعت ضريبة القيمة المضافة
ToPay=دفع
ToGet=العودة
SpecialExpensesArea=Area for all special payments
TaxAndDividendsArea=ضريبة أرباح الأسهم والمساهمات الاجتماعية ، ومنطقة
SocialContribution=المساهمة الاجتماعية
SocialContributions=المساهمات الاجتماعية
TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area
SocialContribution=Social or fiscal tax
SocialContributions=Social or fiscal taxes
MenuSpecialExpenses=Special expenses
MenuTaxAndDividends=الضرائب وعوائد
MenuSalaries=Salaries
MenuSocialContributions=المساهمات الاجتماعية
MenuNewSocialContribution=مساهمة جديدة
NewSocialContribution=المساهمة الاجتماعية الجديدة
ContributionsToPay=دفع الاشتراكات
MenuSocialContributions=Social/fiscal taxes
MenuNewSocialContribution=New tax payment
NewSocialContribution=New social/fiscal tax
ContributionsToPay=Social/fiscal taxes to pay
AccountancyTreasuryArea=المحاسبة / الخزانة المنطقة
AccountancySetup=المحاسبة الإعداد
NewPayment=دفع جديدة
Payments=المدفوعات
PaymentCustomerInvoice=الزبون تسديد الفاتورة
PaymentSupplierInvoice=دفع فاتورة المورد
PaymentSocialContribution=دفع المساهمة الاجتماعية
PaymentSocialContribution=Social/fiscal tax payment
PaymentVat=دفع ضريبة القيمة المضافة
PaymentSalary=Salary payment
ListPayment=قائمة المدفوعات
@@ -91,7 +91,7 @@ LT1PaymentES=RE Payment
LT1PaymentsES=RE Payments
VATPayment=دفع ضريبة القيمة المضافة
VATPayments=دفع ضريبة القيمة المضافة
SocialContributionsPayments=المساهمات الاجتماعية المدفوعات
SocialContributionsPayments=Social/fiscal taxes payments
ShowVatPayment=وتظهر دفع ضريبة القيمة المضافة
TotalToPay=على دفع ما مجموعه
TotalVATReceived=تلقى مجموع الضريبة على القيمة المضافة
@@ -116,11 +116,11 @@ NewCheckDepositOn=تهيئة لتلقي الودائع على حساب : ٪ ق
NoWaitingChecks=لم ينتظر إيداع الشيكات.
DateChequeReceived=استقبال المدخلات تاريخ الشيك
NbOfCheques=ملاحظة : للشيكات
PaySocialContribution=دفع المساهمات الاجتماعية
ConfirmPaySocialContribution=هل أنت متأكد من أن يصنف هذه المساهمة paid الاجتماعية؟
DeleteSocialContribution=حذف المساهمات الاجتماعية
ConfirmDeleteSocialContribution=هل أنت متأكد من أنك تريد حذف هذه المساهمة الاجتماعية؟
ExportDataset_tax_1=المساهمات الاجتماعية والمدفوعات
PaySocialContribution=Pay a social/fiscal tax
ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid?
DeleteSocialContribution=Delete a social or fiscal tax payment
ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment?
ExportDataset_tax_1=Social and fiscal taxes and payments
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
@@ -198,10 +198,10 @@ CalculationRuleDescSupplier=according to supplier, choose appropriate method to
TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a <b>cash accountancy</b> mode is not relevant. This report is only available when using <b>engagement accountancy</b> mode (see setup of accountancy module).
CalculationMode=Calculation mode
AccountancyJournal=Accountancy code journal
ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT
ACCOUNTING_VAT_SOLD_ACCOUNT=Default accountancy code for collecting VAT
ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT
ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties
ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties
CloneTax=Clone a social contribution
ConfirmCloneTax=Confirm the clone of a social contribution
CloneTax=Clone a social/fiscal tax
ConfirmCloneTax=Confirm the clone of a social/fiscal tax payment
CloneTaxForNextMonth=Clone it for next month

View File

@@ -76,6 +76,7 @@ CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of
CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i>
CronCommandHelp=The system command line to execute.
CronCreateJob=Create new Scheduled Job
CronFrom=From
# Info
CronInfoPage=Information
# Common

View File

@@ -35,7 +35,7 @@ ECMSearchByEntity=بحث عن وجوه
ECMSectionOfDocuments=أدلة وثائق
ECMTypeManual=دليل
ECMTypeAuto=التلقائي
ECMDocsBySocialContributions=Documents linked to social contributions
ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
ECMDocsByThirdParties=وثائق مرتبطة أطراف ثالثة
ECMDocsByProposals=وثائق مرتبطة مقترحات
ECMDocsByOrders=وثائق مرتبطة أوامر العملاء

View File

@@ -191,3 +191,4 @@ WarningNotRelevant=Irrelevant operation for this dataset
WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers.
WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s.
WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters
WarningSomeLinesWithNullHourlyRate=Some times were recorded by users when their hourly rate was not defined. A value of 0 was used but this may result in wrong valuation of time spent.

View File

@@ -3,7 +3,7 @@ HRM=HRM
Holidays=Leaves
CPTitreMenu=Leaves
MenuReportMonth=Monthly statement
MenuAddCP=Make a leave request
MenuAddCP=New leave request
NotActiveModCP=You must enable the module Leaves to view this page.
NotConfigModCP=You must configure the module Leaves to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
NoCPforUser=You don't have any available day.
@@ -71,7 +71,7 @@ MotifCP=سبب
UserCP=مستخدم
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of leave requests
MenuLogCP=View change logs
LogCP=Log of updates of available vacation days
ActionByCP=Performed by
UserUpdateCP=For the user
@@ -93,6 +93,7 @@ ValueOptionCP=القيمة
GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation
UpdateConfCPOK=Updated successfully.
ErrorUpdateConfCP=An error occurred during the update, please try again.
AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
@@ -127,6 +128,7 @@ ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Number days
TitleAdminCP=Configuration of Leaves
NoticePeriod=Notice period
#Messages
Hello=Hello
HolidaysToValidate=Validate leave requests
@@ -139,10 +141,11 @@ HolidaysRefused=Request denied
HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled leaved request
HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
Permission20000=Read you own leave requests
Permission20001=Create/modify your leave requests
Permission20002=Create/modify leave requests for everybody
Permission20001=Read you own leave requests
Permission20002=Create/modify your leave requests
Permission20003=Delete leave requests
Permission20004=Setup users available vacation days
Permission20005=Review log of modified leave requests
Permission20006=Read leaves monthly report
Permission20004=Read leave requests for everybody
Permission20005=Create/modify leave requests for everybody
Permission20006=Admin leave requests (setup and update balance)
NewByMonth=Added per month
GoIntoDictionaryHolidayTypes=Go into <strong>Home - Setup - Dictionaries - Type of leaves</strong> to setup the different types of leaves.

View File

@@ -128,6 +128,7 @@ TagCheckMail=Track mail opening
TagUnsubscribe=Unsubscribe link
TagSignature=Signature sending user
TagMailtoEmail=Recipient EMail
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
# Module Notifications
Notifications=الإخطارات
NoNotificationsWillBeSent=إشعارات البريد الإلكتروني لا يجري التخطيط لهذا الحدث ، وشركة

View File

@@ -57,7 +57,7 @@ ErrorSomeErrorWereFoundRollbackIsDone=تم العثور على بعض الأخط
ErrorConfigParameterNotDefined=المعلم <b>ل ٪</b> غير محدد Dolibarr داخل ملف <b>conf.php.</b>
ErrorCantLoadUserFromDolibarrDatabase=فشلت في العثور على المستخدم <b>٪ ق</b> Dolibarr في قاعدة البيانات.
ErrorNoVATRateDefinedForSellerCountry=خطأ ، لم يعرف لمعدلات ضريبة القيمة المضافة فى البلاد ٪ ق.
ErrorNoSocialContributionForSellerCountry=خطأ ، لا يوجد نوع المساهمة الاجتماعية المحددة للبلد '%s'.
ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'.
ErrorFailedToSaveFile=خطأ ، وفشلت في انقاذ الملف.
SetDate=Set date
SelectDate=Select a date
@@ -302,7 +302,7 @@ UnitPriceTTC=سعر الوحدة
PriceU=ارتفاع
PriceUHT=ارتفاع (صافي)
AskPriceSupplierUHT=U.P. net Requested
PriceUTTC=ارتفاع
PriceUTTC=U.P. (inc. tax)
Amount=مبلغ
AmountInvoice=مبلغ الفاتورة
AmountPayment=دفع مبلغ
@@ -339,6 +339,7 @@ IncludedVAT=وتشمل الضريبة على القيمة المضافة
HT=بعد خصم الضرائب
TTC=شركة ضريبة على القيمة المضافة
VAT=ضريبة القيمة المضافة
VATs=Sales taxes
LT1ES=تعاود
LT2ES=IRPF
VATRate=سعر الضريبة على القيمة المضافة

View File

@@ -199,7 +199,8 @@ Entreprises=الشركات
DOLIBARRFOUNDATION_PAYMENT_FORM=أن يسدد الاشتراك باستخدام حوالة مصرفية، راجع صفحة <a target="_blank" href="http://wiki.dolibarr.org/index.php/Subscribe#To_subscribe_making_a_bank_transfer">http://wiki.dolibarr.org/index.php/Subscribe</a> . <br> الدفع باستخدام بطاقة ائتمان أو باي بال، وانقر على زر في أسفل هذه الصفحة. <br>
ByProperties=By characteristics
MembersStatisticsByProperties=Members statistics by characteristics
MembersByNature=Members by nature
MembersByNature=This screen show you statistics on members by nature.
MembersByRegion=This screen show you statistics on members by region.
VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription

View File

@@ -294,3 +294,5 @@ 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
DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer

View File

@@ -14,7 +14,8 @@ MyTasksDesc=ويقتصر هذا الرأي على المشروعات أو الم
OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
TasksPublicDesc=هذا الرأي يعرض جميع المشاريع والمهام ويسمح لك قراءة.
TasksDesc=هذا الرأي يعرض جميع المشاريع والمهام (أذونات المستخدم الخاص أعطى الصلاحية لعرض كل شيء).
AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on.
AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. Assign task to you if you want to enter time on it.
OnlyYourTaskAreVisible=Only tasks you are assigned on are visible. Assign task to you if you want to enter time on it.
ProjectsArea=مشاريع المنطقة
NewProject=مشروع جديد
AddProject=إنشاء مشروع
@@ -76,6 +77,7 @@ ListExpenseReportsAssociatedProject=List of expense reports associated with the
ListDonationsAssociatedProject=List of donations associated with the project
ListActionsAssociatedProject=قائمة الإجراءات المرتبطة بالمشروع
ListTaskTimeUserProject=List of time consumed on tasks of project
TaskTimeUserProject=Time consumed on tasks of project
ActivityOnProjectThisWeek=نشاط المشروع هذا الاسبوع
ActivityOnProjectThisMonth=نشاط المشروع هذا الشهر
ActivityOnProjectThisYear=نشاط المشروع هذا العام
@@ -149,3 +151,6 @@ ProjectsWithThisUserAsContact=Projects with this user as contact
TasksWithThisUserAsContact=Tasks assigned to this user
ResourceNotAssignedToProject=Not assigned to project
ResourceNotAssignedToTask=Not assigned to task
AssignTaskToMe=Assign task to me
AssignTask=Assign
ProjectOverview=Overview

View File

@@ -76,6 +76,7 @@ BROUILLONNER=Reopen
SendToValid=Sent on approval
ModifyInfoGen=Edit
ValidateAndSubmit=Validate and submit for approval
ValidatedWaitingApproval=Validated (waiting for approval)
NOT_VALIDATOR=You are not allowed to approve this expense report
NOT_AUTHOR=You are not the author of this expense report. Operation cancelled.

View File

@@ -84,6 +84,11 @@ WithdrawalFile=Withdrawal file
SetToStatusSent=Set to status "File Sent"
ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
StatisticsByLineStatus=Statistics by status of lines
RUM=RUM
RUMWillBeGenerated=RUM number will be generated once bank account information are saved
WithdrawMode=Withdraw mode (FRST or RECUR)
WithdrawRequestAmount=Withdraw request amount:
WithdrawRequestErrorNilAmount=Unable to create withdraw request for nil amount.
### Notifications
InfoCreditSubject=دفع %s النظام الدائمة من قبل البنك

View File

@@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - admin
WorkflowSetup=سير العمل وحدة الإعداد
WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is open (you can do things in the order you want). You can activate the automatic actions you are interested in.
ThereIsNoWorkflowToModify=There is no workflow to modify for the activated module.
ThereIsNoWorkflowToModify=There is no workflow modifications available with the activated modules.
descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Automatically create a customer order after a commercial proposal is signed
descWORKFLOW_PROPAL_AUTOCREATE_INVOICEAutomatically create a customer invoice after a commercial proposal is signed
descWORKFLOW_CONTRACT_AUTOCREATE_INVOICEAutomatically create a customer invoice after a contract is validated

View File

@@ -429,8 +429,8 @@ Module20Name=Предложения
Module20Desc=Търговско предложение управление
Module22Name=Масови имейли
Module22Desc=Управление на масови имейли
Module23Name= Енергия
Module23Desc= Наблюдение на консумацията на енергия
Module23Name=Енергия
Module23Desc=Наблюдение на консумацията на енергия
Module25Name=Поръчки от клиенти
Module25Desc=Управление на поръчка на клиента
Module30Name=Фактури
@@ -492,7 +492,7 @@ Module400Desc=Management of projects, opportunities or leads. You can then assig
Module410Name=Webcalendar
Module410Desc=Webcalendar интеграция
Module500Name=Special expenses
Module500Desc=Management of special expenses (taxes, social contribution, dividends)
Module500Desc=Management of special expenses (taxes, social or fiscal taxes, dividends)
Module510Name=Salaries
Module510Desc=Management of employees salaries and payments
Module520Name=Loan
@@ -501,7 +501,7 @@ Module600Name=Известия
Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
Module700Name=Дарения
Module700Desc=Управление на дарения
Module770Name=Expense Report
Module770Name=Expense reports
Module770Desc=Management and claim expense reports (transportation, meal, ...)
Module1120Name=Supplier commercial proposal
Module1120Desc=Request supplier commercial proposal and prices
@@ -579,7 +579,7 @@ Permission32=Създаване / промяна на продукти
Permission34=Изтриване на продукти
Permission36=Преглед / управление на скрити продукти
Permission38=Износ на продукти
Permission41=Четене на проекти (общи проекти и проекти съм се с нас за)
Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet)
Permission42=Създаване / промяна на проекти (общи проекти и проекти съм се с нас за)
Permission44=Изтриване на проекти (общи проекти и проекти съм се с нас за)
Permission61=Прочети интервенции
@@ -600,10 +600,10 @@ Permission86=Изпрати клиенти поръчки
Permission87=Затваряне на поръчките на клиентите
Permission88=Отказ клиенти поръчки
Permission89=Изтриване на клиенти поръчки
Permission91=Социалноосигурителните вноски и ДДС
Permission92=Създаване / промяна на социалните вноски и ДДС
Permission93=Изтриване на социалноосигурителните вноски и ДДС
Permission94=Експортиране на социалноосигурителните вноски
Permission91=Read social or fiscal taxes and vat
Permission92=Create/modify social or fiscal taxes and vat
Permission93=Delete social or fiscal taxes and vat
Permission94=Export social or fiscal taxes
Permission95=Прочети доклада
Permission101=Прочети sendings
Permission102=Създаване / промяна sendings
@@ -621,9 +621,9 @@ Permission121=Четене на трети лица, свързани с пот
Permission122=Създаване / промяна трети страни, свързани с потребителя
Permission125=Изтриване на трети лица, свързани с потребителя
Permission126=Трети страни за износ
Permission141=Прочетете проекти (лично аз не съм се с нас за)
Permission142=Създаване / промяна проекти (лично аз не съм се свържете)
Permission144=Изтриване на проекти (лично аз не съм се с нас за)
Permission141=Read all projects and tasks (also private projects i am not contact for)
Permission142=Create/modify all projects and tasks (also private projects i am not contact for)
Permission144=Delete all projects and tasks (also private projects i am not contact for)
Permission146=Прочети доставчици
Permission147=Прочети статистиката
Permission151=Нареждания за периодични преводи
@@ -801,7 +801,7 @@ DictionaryCountry=Countries
DictionaryCurrency=Currencies
DictionaryCivility=Civility title
DictionaryActions=Type of agenda events
DictionarySocialContributions=Social contributions types
DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps
DictionaryPaymentConditions=Payment terms
@@ -820,6 +820,7 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units
DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves
SetupSaved=Setup спаси
BackToModuleList=Обратно към списъка с модули
BackToDictionaryList=Back to dictionaries list
@@ -1510,7 +1511,7 @@ ConfirmDeleteMenu=Сигурен ли сте, че искате да изтри
DeleteLine=Изтриване на ред
ConfirmDeleteLine=Сигурни ли сте, че желаете да изтриете този ред?
##### Tax #####
TaxSetup=Данъци, социални осигуровки и дивиденти модул за настройка
TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=Дължимия ДДС
OptionVATDefault=Cash basis
OptionVATDebitOption=Accrual basis
@@ -1564,9 +1565,11 @@ EndPointIs=SOAP клиентите трябва да изпратят своит
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
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
ApiKey=Key for API
##### Bank #####
BankSetupModule=Модул за настройка на банката
FreeLegalTextOnChequeReceipts=Свободен текст чековите разписки
@@ -1596,6 +1599,7 @@ ProjectsSetup=Инсталационния проект модул
ProjectsModelModule=Проект доклади документ модел
TasksNumberingModules=Tasks numbering module
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
@@ -1640,3 +1644,9 @@ ConfFileMuseContainCustom=Installing an external module from application save th
HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
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
TopMenuBackgroundColor=Background color for Top menu
LeftMenuBackgroundColor=Background color for Left menu
BackgroundTableTitleColor=Background color for table title line
BackgroundTableLineOddColor=Background color for odd table lines
BackgroundTableLineEvenColor=Background color for even table lines

View File

@@ -55,7 +55,6 @@ OrderBilledInDolibarr=Order %s classified billed
OrderApprovedInDolibarr=Поръчка %s одобрен
OrderRefusedInDolibarr=Order %s refused
OrderBackToDraftInDolibarr=Поръчка %s се върне в състояние на чернова
OrderCanceledInDolibarr=Поръчка %s отменен
ProposalSentByEMail=Търговски %s предложението, изпратено по електронна поща
OrderSentByEMail=, Изпратени по електронната поща %s поръчка на клиента
InvoiceSentByEMail=, Изпратени по електронната поща %s клиенти фактура
@@ -96,3 +95,5 @@ AddEvent=Create event
MyAvailability=My availability
ActionType=Event type
DateActionBegin=Start event date
CloneAction=Clone event
ConfirmCloneEvent=Are you sure you want to clone the event <b>%s</b> ?

View File

@@ -113,7 +113,7 @@ CustomerInvoicePayment=Клиентско плащане
CustomerInvoicePaymentBack=Customer payment back
SupplierInvoicePayment=Доставчик плащане
WithdrawalPayment=Оттегляне плащане
SocialContributionPayment=Осигурителната вноска за плащане
SocialContributionPayment=Social/fiscal tax payment
FinancialAccountJournal=Финансова сметка списание
BankTransfer=Банков превод
BankTransfers=Банкови преводи

View File

@@ -178,7 +178,7 @@ NumberOfBills=Nb на фактури
NumberOfBillsByMonth=Nb на фактури по месец
AmountOfBills=Размер на фактури
AmountOfBillsByMonthHT=Размер на фактури от месец (нетно от данъци)
ShowSocialContribution=Показване на осигурителната вноска
ShowSocialContribution=Show social/fiscal tax
ShowBill=Покажи фактура
ShowInvoice=Покажи фактура
ShowInvoiceReplace=Покажи замяна фактура
@@ -270,7 +270,7 @@ BillAddress=Бил адрес
HelpEscompte=Тази отстъпка е отстъпка, предоставена на клиента, тъй като плащането е извършено преди термина.
HelpAbandonBadCustomer=Тази сума е бил изоставен (клиент казва, че е лош клиент) и се счита като извънредна в насипно състояние.
HelpAbandonOther=Тази сума е изоставена, тъй като тя е грешка (грешен клиент или фактура, заменен от друг например)
IdSocialContribution=Социален принос ID
IdSocialContribution=Social/fiscal tax payment id
PaymentId=Плащане ID
InvoiceId=Фактура номер
InvoiceRef=Фактура с реф.

View File

@@ -30,6 +30,7 @@ ThirdPartyContact=От страна на трети лица за контакт
StatusContactValidated=Състояние на контакт/адрес
Company=Фирма
CompanyName=Име на фирмата
AliasNames=Alias names (commercial, trademark, ...)
Companies=Фирми
CountryIsInEEC=Държавата е част от Европейската икономическа общност
ThirdPartyName=Име на Трета страна

View File

@@ -56,23 +56,23 @@ VATCollected=Събраният ДДС
ToPay=За да платите
ToGet=За да се върнете
SpecialExpensesArea=Area for all special payments
TaxAndDividendsArea=Данъци, вноски за социално и дивиденти площ
SocialContribution=Социален принос
SocialContributions=Социалноосигурителни вноски
TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area
SocialContribution=Social or fiscal tax
SocialContributions=Social or fiscal taxes
MenuSpecialExpenses=Special expenses
MenuTaxAndDividends=Данъци и дивиденти
MenuSalaries=Salaries
MenuSocialContributions=Социалноосигурителни вноски
MenuNewSocialContribution=Нов принос
NewSocialContribution=Нова социална принос
ContributionsToPay=Вноски за плащане
MenuSocialContributions=Social/fiscal taxes
MenuNewSocialContribution=New tax payment
NewSocialContribution=New social/fiscal tax
ContributionsToPay=Social/fiscal taxes to pay
AccountancyTreasuryArea=Счетоводство / Каса
AccountancySetup=Настройки на счетоводството
NewPayment=Нов плащане
Payments=Плащания
PaymentCustomerInvoice=Плащане на клиенти фактура
PaymentSupplierInvoice=Плащане доставчик фактура
PaymentSocialContribution=Осигурителната вноска за плащане
PaymentSocialContribution=Social/fiscal tax payment
PaymentVat=Плащането на ДДС
PaymentSalary=Salary payment
ListPayment=Списък на плащанията
@@ -91,7 +91,7 @@ LT1PaymentES=RE Payment
LT1PaymentsES=RE Payments
VATPayment=Плащането на ДДС
VATPayments=Плащанията по ДДС
SocialContributionsPayments=Социални плащания вноски
SocialContributionsPayments=Social/fiscal taxes payments
ShowVatPayment=Покажи плащане на ДДС
TotalToPay=Всичко за плащане
TotalVATReceived=Общо ДДС
@@ -116,11 +116,11 @@ NewCheckDepositOn=Създаване на разписка за депозит
NoWaitingChecks=Няма проверки за депозит.
DateChequeReceived=Проверете датата рецепция
NbOfCheques=Nb на проверките
PaySocialContribution=Заплащане на осигурителната вноска
ConfirmPaySocialContribution=Сигурен ли сте, че искате да класифицира този осигурителната вноска като платен?
DeleteSocialContribution=Изтриване на осигурителната вноска
ConfirmDeleteSocialContribution=Сигурен ли сте, че искате да изтриете тази осигурителната вноска?
ExportDataset_tax_1=Социални вноски и плащания
PaySocialContribution=Pay a social/fiscal tax
ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid?
DeleteSocialContribution=Delete a social or fiscal tax payment
ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment?
ExportDataset_tax_1=Social and fiscal taxes and payments
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
@@ -198,10 +198,10 @@ CalculationRuleDescSupplier=according to supplier, choose appropriate method to
TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a <b>cash accountancy</b> mode is not relevant. This report is only available when using <b>engagement accountancy</b> mode (see setup of accountancy module).
CalculationMode=Calculation mode
AccountancyJournal=Accountancy code journal
ACCOUNTING_VAT_ACCOUNT=Счетоводен код по подразбиране за начисляване на ДДС
ACCOUNTING_VAT_SOLD_ACCOUNT=Default accountancy code for collecting VAT
ACCOUNTING_VAT_BUY_ACCOUNT=Счетоводен код по подразбиране за плащане на ДДС
ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties
ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties
CloneTax=Клониране на социално-осигурителни вноски
ConfirmCloneTax=Потвърдете клонирането на социално-осигурителните вноски
CloneTax=Clone a social/fiscal tax
ConfirmCloneTax=Confirm the clone of a social/fiscal tax payment
CloneTaxForNextMonth=Клониране за следващ месец

View File

@@ -76,6 +76,7 @@ CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of
CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i>
CronCommandHelp=Системния команден ред за стартиране.
CronCreateJob=Create new Scheduled Job
CronFrom=From
# Info
CronInfoPage=Информация
# Common

View File

@@ -35,7 +35,7 @@ ECMSearchByEntity=Търсене по обект
ECMSectionOfDocuments=Директории на документи
ECMTypeManual=Ръчно
ECMTypeAuto=Автоматично
ECMDocsBySocialContributions=Документи, които се отнасят до социални вноски
ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
ECMDocsByThirdParties=Документи, свързани с трети страни
ECMDocsByProposals=Документи, свързани с предложения
ECMDocsByOrders=Документи, свързани с поръчки на клиенти

View File

@@ -191,3 +191,4 @@ WarningNotRelevant=Irrelevant operation for this dataset
WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers.
WarningPaymentDateLowerThanInvoiceDate=Датата на плащане (%s) е по-ранна от датата на фактуриране (%s) за фактура %s.
WarningTooManyDataPleaseUseMoreFilters=Твърде много данни. Моля, използвайте повече филтри
WarningSomeLinesWithNullHourlyRate=Some times were recorded by users when their hourly rate was not defined. A value of 0 was used but this may result in wrong valuation of time spent.

View File

@@ -3,7 +3,7 @@ HRM=ЧР
Holidays=Leaves
CPTitreMenu=Leaves
MenuReportMonth=Месечно извлечение
MenuAddCP=Make a leave request
MenuAddCP=New leave request
NotActiveModCP=You must enable the module Leaves to view this page.
NotConfigModCP=You must configure the module Leaves to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
NoCPforUser=You don't have any available day.
@@ -71,7 +71,7 @@ MotifCP=Причина
UserCP=Потребител
ErrorAddEventToUserCP=Възникна грешка при добавяне на изключително отпуск.
AddEventToUserOkCP=Добавянето на извънредния отпуск е завършена.
MenuLogCP=View logs of leave requests
MenuLogCP=View change logs
LogCP=Log of updates of available vacation days
ActionByCP=В изпълнение на
UserUpdateCP=За потребителя
@@ -93,6 +93,7 @@ ValueOptionCP=Стойност
GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Потвърждаване на конфигурацията
LastUpdateCP=Last automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation
UpdateConfCPOK=Актуализира се успешно.
ErrorUpdateConfCP=Възникна грешка по време на актуализацията, моля опитайте отново.
AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
@@ -127,6 +128,7 @@ ErrorMailNotSend=Възникна грешка при изпращане на и
NoCPforMonth=Не оставяйте този месец.
nbJours=Брой дни
TitleAdminCP=Configuration of Leaves
NoticePeriod=Notice period
#Messages
Hello=Hello
HolidaysToValidate=Validate leave requests
@@ -139,10 +141,11 @@ HolidaysRefused=Request denied
HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled leaved request
HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
Permission20000=Read you own leave requests
Permission20001=Create/modify your leave requests
Permission20002=Create/modify leave requests for everybody
Permission20001=Read you own leave requests
Permission20002=Create/modify your leave requests
Permission20003=Delete leave requests
Permission20004=Setup users available vacation days
Permission20005=Review log of modified leave requests
Permission20006=Read leaves monthly report
Permission20004=Read leave requests for everybody
Permission20005=Create/modify leave requests for everybody
Permission20006=Admin leave requests (setup and update balance)
NewByMonth=Added per month
GoIntoDictionaryHolidayTypes=Go into <strong>Home - Setup - Dictionaries - Type of leaves</strong> to setup the different types of leaves.

View File

@@ -128,6 +128,7 @@ TagCheckMail=Tracker поща отвори
TagUnsubscribe=Отписване връзка
TagSignature=Подпис изпращане на потребителя
TagMailtoEmail=E-mail на получателя
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
# Module Notifications
Notifications=Известия
NoNotificationsWillBeSent=Не са планирани за това събитие и компания известия по имейл

View File

@@ -57,7 +57,7 @@ ErrorSomeErrorWereFoundRollbackIsDone=Някои бяха открити гре
ErrorConfigParameterNotDefined=Параметъра <b>%s</b> не е дефиниран в конфигурационния файл на Dolibarr <b>conf.php</b>.
ErrorCantLoadUserFromDolibarrDatabase=Не можа да се намери потребител <b>%s</b> в базата данни на Dolibarr.
ErrorNoVATRateDefinedForSellerCountry=Грешка, няма дефинирани ДДС ставки, за държавата '%s'.
ErrorNoSocialContributionForSellerCountry=Грешка, не е социален тип участие, определено за &quot;%s&quot; страна.
ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'.
ErrorFailedToSaveFile=Грешка, файла не е записан.
SetDate=Set date
SelectDate=Select a date
@@ -302,7 +302,7 @@ UnitPriceTTC=Единична цена
PriceU=U.P.
PriceUHT=U.P. (нето)
AskPriceSupplierUHT=U.P. net Requested
PriceUTTC=U.P.
PriceUTTC=U.P. (inc. tax)
Amount=Размер
AmountInvoice=Фактурирана стойност
AmountPayment=Сума за плащане
@@ -339,6 +339,7 @@ IncludedVAT=С включен данък
HT=без данък
TTC=с данък
VAT=Данък върху продажбите
VATs=Sales taxes
LT1ES=RE
LT2ES=IRPF
VATRate=Данъчната ставка

View File

@@ -199,7 +199,8 @@ Entreprises=Фирми
DOLIBARRFOUNDATION_PAYMENT_FORM=За да направите абонамент на плащане чрез банков превод, вижте стр. <a target="_blank" href="http://wiki.dolibarr.org/index.php/Subscribe#To_subscribe_making_a_bank_transfer">http://wiki.dolibarr.org/index.php/Subscribe</a> . <br> За да платите чрез кредитна карта или Paypal, кликнете върху бутона в долната част на тази страница. <br>
ByProperties=By characteristics
MembersStatisticsByProperties=Members statistics by characteristics
MembersByNature=Members by nature
MembersByNature=This screen show you statistics on members by nature.
MembersByRegion=This screen show you statistics on members by region.
VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription

View File

@@ -294,3 +294,5 @@ 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
DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer

View File

@@ -14,7 +14,8 @@ MyTasksDesc=Тази гледна точка е ограничена до про
OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
TasksPublicDesc=Този възглед представя всички проекти и задачи, които може да чете.
TasksDesc=Този възглед представя всички проекти и задачи (потребителски разрешения ви даде разрешение да видите всичко).
AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on.
AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. Assign task to you if you want to enter time on it.
OnlyYourTaskAreVisible=Only tasks you are assigned on are visible. Assign task to you if you want to enter time on it.
ProjectsArea=Проекти област
NewProject=Нов проект
AddProject=Create project
@@ -76,6 +77,7 @@ ListExpenseReportsAssociatedProject=List of expense reports associated with the
ListDonationsAssociatedProject=List of donations associated with the project
ListActionsAssociatedProject=Списък на събития, свързани с проекта
ListTaskTimeUserProject=List of time consumed on tasks of project
TaskTimeUserProject=Time consumed on tasks of project
ActivityOnProjectThisWeek=Дейности в проекта тази седмица
ActivityOnProjectThisMonth=Дейност по проект, този месец
ActivityOnProjectThisYear=Дейности в проекта тази година
@@ -149,3 +151,6 @@ ProjectsWithThisUserAsContact=Projects with this user as contact
TasksWithThisUserAsContact=Tasks assigned to this user
ResourceNotAssignedToProject=Not assigned to project
ResourceNotAssignedToTask=Not assigned to task
AssignTaskToMe=Assign task to me
AssignTask=Assign
ProjectOverview=Overview

View File

@@ -76,6 +76,7 @@ BROUILLONNER=Reopen
SendToValid=Sent on approval
ModifyInfoGen=Edit
ValidateAndSubmit=Validate and submit for approval
ValidatedWaitingApproval=Validated (waiting for approval)
NOT_VALIDATOR=You are not allowed to approve this expense report
NOT_AUTHOR=You are not the author of this expense report. Operation cancelled.

View File

@@ -84,6 +84,11 @@ WithdrawalFile=Withdrawal file
SetToStatusSent=Set to status "File Sent"
ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
StatisticsByLineStatus=Statistics by status of lines
RUM=RUM
RUMWillBeGenerated=RUM number will be generated once bank account information are saved
WithdrawMode=Withdraw mode (FRST or RECUR)
WithdrawRequestAmount=Withdraw request amount:
WithdrawRequestErrorNilAmount=Unable to create withdraw request for nil amount.
### Notifications
InfoCreditSubject=Плащане на постоянно нареждане %s от банката

View File

@@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - admin
WorkflowSetup=Настройки на модул Workflow
WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is open (you can do things in the order you want). You can activate the automatic actions you are interested in.
ThereIsNoWorkflowToModify=There is no workflow to modify for the activated module.
ThereIsNoWorkflowToModify=There is no workflow modifications available with the activated modules.
descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Automatically create a customer order after a commercial proposal is signed
descWORKFLOW_PROPAL_AUTOCREATE_INVOICEAutomatically create a customer invoice after a commercial proposal is signed
descWORKFLOW_CONTRACT_AUTOCREATE_INVOICEAutomatically create a customer invoice after a contract is validated

View File

@@ -429,8 +429,8 @@ Module20Name=Proposals
Module20Desc=Commercial proposal management
Module22Name=Mass E-mailings
Module22Desc=Mass E-mailing management
Module23Name= Energy
Module23Desc= Monitoring the consumption of energies
Module23Name=Energy
Module23Desc=Monitoring the consumption of energies
Module25Name=Customer Orders
Module25Desc=Customer order management
Module30Name=Invoices
@@ -492,7 +492,7 @@ Module400Desc=Management of projects, opportunities or leads. You can then assig
Module410Name=Webcalendar
Module410Desc=Webcalendar integration
Module500Name=Special expenses
Module500Desc=Management of special expenses (taxes, social contribution, dividends)
Module500Desc=Management of special expenses (taxes, social or fiscal taxes, dividends)
Module510Name=Salaries
Module510Desc=Management of employees salaries and payments
Module520Name=Loan
@@ -501,7 +501,7 @@ Module600Name=Notifications
Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
Module700Name=Donations
Module700Desc=Donation management
Module770Name=Expense Report
Module770Name=Expense reports
Module770Desc=Management and claim expense reports (transportation, meal, ...)
Module1120Name=Supplier commercial proposal
Module1120Desc=Request supplier commercial proposal and prices
@@ -579,7 +579,7 @@ Permission32=Create/modify products
Permission34=Delete products
Permission36=See/manage hidden products
Permission38=Export products
Permission41=Read projects (shared project and projects i'm contact for)
Permission41=Read projects and tasks (shared project and projects i'm contact for). Can also enter time consumed on assigned tasks (timesheet)
Permission42=Create/modify projects (shared project and projects i'm contact for)
Permission44=Delete projects (shared project and projects i'm contact for)
Permission61=Read interventions
@@ -600,10 +600,10 @@ Permission86=Send customers orders
Permission87=Close customers orders
Permission88=Cancel customers orders
Permission89=Delete customers orders
Permission91=Read social contributions and vat
Permission92=Create/modify social contributions and vat
Permission93=Delete social contributions and vat
Permission94=Export social contributions
Permission91=Read social or fiscal taxes and vat
Permission92=Create/modify social or fiscal taxes and vat
Permission93=Delete social or fiscal taxes and vat
Permission94=Export social or fiscal taxes
Permission95=Read reports
Permission101=Read sendings
Permission102=Create/modify sendings
@@ -621,9 +621,9 @@ Permission121=Read third parties linked to user
Permission122=Create/modify third parties linked to user
Permission125=Delete third parties linked to user
Permission126=Export third parties
Permission141=Read projects (also private i am not contact for)
Permission142=Create/modify projects (also private i am not contact for)
Permission144=Delete projects (also private i am not contact for)
Permission141=Read all projects and tasks (also private projects i am not contact for)
Permission142=Create/modify all projects and tasks (also private projects i am not contact for)
Permission144=Delete all projects and tasks (also private projects i am not contact for)
Permission146=Read providers
Permission147=Read stats
Permission151=Read standing orders
@@ -801,7 +801,7 @@ DictionaryCountry=Countries
DictionaryCurrency=Currencies
DictionaryCivility=Civility title
DictionaryActions=Type of agenda events
DictionarySocialContributions=Social contributions types
DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps
DictionaryPaymentConditions=Payment terms
@@ -820,6 +820,7 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units
DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves
SetupSaved=Setup saved
BackToModuleList=Back to modules list
BackToDictionaryList=Back to dictionaries list
@@ -1510,7 +1511,7 @@ ConfirmDeleteMenu=Are you sure you want to delete menu entry <b>%s</b> ?
DeleteLine=Delete line
ConfirmDeleteLine=Are you sure you want to delete this line ?
##### Tax #####
TaxSetup=Taxes, social contributions and dividends module setup
TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=VAT due
OptionVATDefault=Cash basis
OptionVATDebitOption=Accrual basis
@@ -1564,9 +1565,11 @@ EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint availa
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
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
ApiKey=Key for API
##### Bank #####
BankSetupModule=Bank module setup
FreeLegalTextOnChequeReceipts=Free text on cheque receipts
@@ -1596,6 +1599,7 @@ ProjectsSetup=Project module setup
ProjectsModelModule=Project reports document model
TasksNumberingModules=Tasks numbering module
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
@@ -1640,3 +1644,9 @@ ConfFileMuseContainCustom=Installing an external module from application save th
HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
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
TopMenuBackgroundColor=Background color for Top menu
LeftMenuBackgroundColor=Background color for Left menu
BackgroundTableTitleColor=Background color for table title line
BackgroundTableLineOddColor=Background color for odd table lines
BackgroundTableLineEvenColor=Background color for even table lines

View File

@@ -48,11 +48,13 @@ InvoiceValidatedInDolibarr=Invoice %s validated
InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS
InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status
InvoiceDeleteDolibarr=Invoice %s deleted
OrderValidatedInDolibarr= Order %s validated
OrderValidatedInDolibarr=Order %s validated
OrderDeliveredInDolibarr=Order %s classified delivered
OrderCanceledInDolibarr=Order %s canceled
OrderBilledInDolibarr=Order %s classified billed
OrderApprovedInDolibarr=Order %s approved
OrderRefusedInDolibarr=Order %s refused
OrderBackToDraftInDolibarr=Order %s go back to draft status
OrderCanceledInDolibarr=Order %s canceled
ProposalSentByEMail=Commercial proposal %s sent by EMail
OrderSentByEMail=Customer order %s sent by EMail
InvoiceSentByEMail=Customer invoice %s sent by EMail
@@ -91,3 +93,7 @@ WorkingTimeRange=Working time range
WorkingDaysRange=Working days range
AddEvent=Create event
MyAvailability=My availability
ActionType=Event type
DateActionBegin=Start event date
CloneAction=Clone event
ConfirmCloneEvent=Are you sure you want to clone the event <b>%s</b> ?

View File

@@ -113,7 +113,7 @@ CustomerInvoicePayment=Customer payment
CustomerInvoicePaymentBack=Customer payment back
SupplierInvoicePayment=Supplier payment
WithdrawalPayment=Withdrawal payment
SocialContributionPayment=Social contribution payment
SocialContributionPayment=Social/fiscal tax payment
FinancialAccountJournal=Financial account journal
BankTransfer=Bank transfer
BankTransfers=Bank transfers

View File

@@ -178,7 +178,7 @@ NumberOfBills=Nb of invoices
NumberOfBillsByMonth=Nb of invoices by month
AmountOfBills=Amount of invoices
AmountOfBillsByMonthHT=Amount of invoices by month (net of tax)
ShowSocialContribution=Show social contribution
ShowSocialContribution=Show social/fiscal tax
ShowBill=Show invoice
ShowInvoice=Show invoice
ShowInvoiceReplace=Show replacing invoice
@@ -270,7 +270,7 @@ BillAddress=Bill address
HelpEscompte=This discount is a discount granted to customer because its payment was made before term.
HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loose.
HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example)
IdSocialContribution=Social contribution id
IdSocialContribution=Social/fiscal tax payment id
PaymentId=Payment id
InvoiceId=Invoice id
InvoiceRef=Invoice ref.

View File

@@ -30,6 +30,7 @@ ThirdPartyContact=Third party contact/address
StatusContactValidated=Status of contact/address
Company=Company
CompanyName=Company name
AliasNames=Alias names (commercial, trademark, ...)
Companies=Companies
CountryIsInEEC=Country is inside European Economic Community
ThirdPartyName=Third party name

View File

@@ -56,23 +56,23 @@ VATCollected=VAT collected
ToPay=To pay
ToGet=To get back
SpecialExpensesArea=Area for all special payments
TaxAndDividendsArea=Tax, social contributions and dividends area
SocialContribution=Social contribution
SocialContributions=Social contributions
TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area
SocialContribution=Social or fiscal tax
SocialContributions=Social or fiscal taxes
MenuSpecialExpenses=Special expenses
MenuTaxAndDividends=Taxes and dividends
MenuSalaries=Salaries
MenuSocialContributions=Social contributions
MenuNewSocialContribution=New contribution
NewSocialContribution=New social contribution
ContributionsToPay=Contributions to pay
MenuSocialContributions=Social/fiscal taxes
MenuNewSocialContribution=New tax payment
NewSocialContribution=New social/fiscal tax
ContributionsToPay=Social/fiscal taxes to pay
AccountancyTreasuryArea=Accountancy/Treasury area
AccountancySetup=Accountancy setup
NewPayment=New payment
Payments=Payments
PaymentCustomerInvoice=Customer invoice payment
PaymentSupplierInvoice=Supplier invoice payment
PaymentSocialContribution=Social contribution payment
PaymentSocialContribution=Social/fiscal tax payment
PaymentVat=VAT payment
PaymentSalary=Salary payment
ListPayment=List of payments
@@ -91,7 +91,7 @@ LT1PaymentES=RE Payment
LT1PaymentsES=RE Payments
VATPayment=VAT Payment
VATPayments=VAT Payments
SocialContributionsPayments=Social contributions payments
SocialContributionsPayments=Social/fiscal taxes payments
ShowVatPayment=Show VAT payment
TotalToPay=Total to pay
TotalVATReceived=Total VAT received
@@ -116,11 +116,11 @@ NewCheckDepositOn=Create receipt for deposit on account: %s
NoWaitingChecks=No checks waiting for deposit.
DateChequeReceived=Check reception date
NbOfCheques=Nb of checks
PaySocialContribution=Pay a social contribution
ConfirmPaySocialContribution=Are you sure you want to classify this social contribution as paid?
DeleteSocialContribution=Delete a social contribution
ConfirmDeleteSocialContribution=Are you sure you want to delete this social contribution?
ExportDataset_tax_1=Social contributions and payments
PaySocialContribution=Pay a social/fiscal tax
ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid?
DeleteSocialContribution=Delete a social or fiscal tax payment
ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment?
ExportDataset_tax_1=Social and fiscal taxes and payments
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
@@ -198,10 +198,10 @@ CalculationRuleDescSupplier=according to supplier, choose appropriate method to
TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a <b>cash accountancy</b> mode is not relevant. This report is only available when using <b>engagement accountancy</b> mode (see setup of accountancy module).
CalculationMode=Calculation mode
AccountancyJournal=Accountancy code journal
ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT
ACCOUNTING_VAT_SOLD_ACCOUNT=Default accountancy code for collecting VAT
ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT
ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties
ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties
CloneTax=Clone a social contribution
ConfirmCloneTax=Confirm the clone of a social contribution
CloneTax=Clone a social/fiscal tax
ConfirmCloneTax=Confirm the clone of a social/fiscal tax payment
CloneTaxForNextMonth=Clone it for next month

View File

@@ -76,6 +76,7 @@ CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of
CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i>
CronCommandHelp=The system command line to execute.
CronCreateJob=Create new Scheduled Job
CronFrom=From
# Info
CronInfoPage=Information
# Common

View File

@@ -35,7 +35,7 @@ ECMSearchByEntity=Search by object
ECMSectionOfDocuments=Directories of documents
ECMTypeManual=Manual
ECMTypeAuto=Automatic
ECMDocsBySocialContributions=Documents linked to social contributions
ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
ECMDocsByThirdParties=Documents linked to third parties
ECMDocsByProposals=Documents linked to proposals
ECMDocsByOrders=Documents linked to customers orders

View File

@@ -191,3 +191,4 @@ WarningNotRelevant=Irrelevant operation for this dataset
WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers.
WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s.
WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters
WarningSomeLinesWithNullHourlyRate=Some times were recorded by users when their hourly rate was not defined. A value of 0 was used but this may result in wrong valuation of time spent.

View File

@@ -3,7 +3,7 @@ HRM=HRM
Holidays=Leaves
CPTitreMenu=Leaves
MenuReportMonth=Monthly statement
MenuAddCP=Make a leave request
MenuAddCP=New leave request
NotActiveModCP=You must enable the module Leaves to view this page.
NotConfigModCP=You must configure the module Leaves to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
NoCPforUser=You don't have any available day.
@@ -71,7 +71,7 @@ MotifCP=Reason
UserCP=User
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed.
MenuLogCP=View logs of leave requests
MenuLogCP=View change logs
LogCP=Log of updates of available vacation days
ActionByCP=Performed by
UserUpdateCP=For the user
@@ -93,6 +93,7 @@ ValueOptionCP=Value
GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation
UpdateConfCPOK=Updated successfully.
ErrorUpdateConfCP=An error occurred during the update, please try again.
AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
@@ -127,6 +128,7 @@ ErrorMailNotSend=An error occurred while sending email:
NoCPforMonth=No leave this month.
nbJours=Number days
TitleAdminCP=Configuration of Leaves
NoticePeriod=Notice period
#Messages
Hello=Hello
HolidaysToValidate=Validate leave requests
@@ -139,10 +141,11 @@ HolidaysRefused=Request denied
HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled leaved request
HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
Permission20000=Read you own leave requests
Permission20001=Create/modify your leave requests
Permission20002=Create/modify leave requests for everybody
Permission20001=Read you own leave requests
Permission20002=Create/modify your leave requests
Permission20003=Delete leave requests
Permission20004=Setup users available vacation days
Permission20005=Review log of modified leave requests
Permission20006=Read leaves monthly report
Permission20004=Read leave requests for everybody
Permission20005=Create/modify leave requests for everybody
Permission20006=Admin leave requests (setup and update balance)
NewByMonth=Added per month
GoIntoDictionaryHolidayTypes=Go into <strong>Home - Setup - Dictionaries - Type of leaves</strong> to setup the different types of leaves.

View File

@@ -128,6 +128,7 @@ TagCheckMail=Track mail opening
TagUnsubscribe=Unsubscribe link
TagSignature=Signature sending user
TagMailtoEmail=Recipient EMail
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
# Module Notifications
Notifications=Notifications
NoNotificationsWillBeSent=No email notifications are planned for this event and company

View File

@@ -57,7 +57,7 @@ ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. We rollback change
ErrorConfigParameterNotDefined=Parameter <b>%s</b> is not defined inside Dolibarr config file <b>conf.php</b>.
ErrorCantLoadUserFromDolibarrDatabase=Failed to find user <b>%s</b> in Dolibarr database.
ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'.
ErrorNoSocialContributionForSellerCountry=Error, no social contribution type defined for country '%s'.
ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'.
ErrorFailedToSaveFile=Error, failed to save file.
SetDate=Set date
SelectDate=Select a date
@@ -302,7 +302,7 @@ UnitPriceTTC=Unit price
PriceU=U.P.
PriceUHT=U.P. (net)
AskPriceSupplierUHT=U.P. net Requested
PriceUTTC=U.P.
PriceUTTC=U.P. (inc. tax)
Amount=Amount
AmountInvoice=Invoice amount
AmountPayment=Payment amount
@@ -339,6 +339,7 @@ IncludedVAT=Included tax
HT=Net of tax
TTC=Inc. tax
VAT=Sales tax
VATs=Sales taxes
LT1ES=RE
LT2ES=IRPF
VATRate=Tax Rate

View File

@@ -199,7 +199,8 @@ Entreprises=Companies
DOLIBARRFOUNDATION_PAYMENT_FORM=To make your subscription payment using a bank transfer, see page <a target="_blank" href="http://wiki.dolibarr.org/index.php/Subscribe#To_subscribe_making_a_bank_transfer">http://wiki.dolibarr.org/index.php/Subscribe</a>.<br>To pay using a Credit Card or Paypal, click on button at bottom of this page.<br>
ByProperties=By characteristics
MembersStatisticsByProperties=Members statistics by characteristics
MembersByNature=Members by nature
MembersByNature=This screen show you statistics on members by nature.
MembersByRegion=This screen show you statistics on members by region.
VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription

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