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

This commit is contained in:
aspangaro 2015-07-04 15:01:11 +02:00
commit d1111f9b90
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: Function yn can show a visual checkbox.
- New: Introduced select2 jquery plugin. - New: Introduced select2 jquery plugin.
- New: Possibility to add javascript in main login page with "getLoginPageOptions" hook - 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 WARNING: Following changes may create regression for some external modules, but was necessary to make
Dolibarr better: Dolibarr better:

View File

@ -2,9 +2,9 @@
#------------------------------------------------------ #------------------------------------------------------
# Script to push language files to Transifex # 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 # Syntax
@ -13,7 +13,7 @@ then
echo "This push local files to transifex." 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 "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 " 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 exit
fi fi
@ -23,20 +23,15 @@ then
exit exit
fi 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" ] if [ "x$1" = "xsource" ]
then then
echo "tx push -s $2 $3" echo "tx push -s $2 $3"
tx push -s $2 $3 tx push -s $2 $3
else else
echo "tx push --skip -t -l $1 $2 $3 $4" for file in `find htdocs/langs/$1/*.lang -type f`
tx push --skip -t -l $1 $2 $3 $4 do
fi 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 fi

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> /* 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -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("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("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("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_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"",$param,"",'width="60" align="center"',$sortfield,$sortorder);
print '</tr>'; print '</tr>';
@ -174,12 +174,17 @@ if ($result) {
$var = true; $var = true;
$accountstatic=new AccountingAccount($db);
while ( $i < min($num, $limit) ) { while ( $i < min($num, $limit) ) {
$obj = $db->fetch_object($resql); $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 '<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->label . '</td>';
print '<td>' . $obj->account_parent . '</td>'; print '<td>' . $obj->account_parent . '</td>';
print '<td>' . $obj->pcg_type . '</td>'; print '<td>' . $obj->pcg_type . '</td>';
@ -210,6 +215,7 @@ if ($result) {
print '</td>' . "\n"; print '</td>' . "\n";
print "</tr>\n"; print "</tr>\n";
$var=!$var;
$i ++; $i ++;
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> /* 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) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
* *
@ -66,8 +66,7 @@ class AccountingAccount extends CommonObject
*/ */
function fetch($rowid = null, $account_number = null) 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 = "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"; $sql.= " FROM " . MAIN_DB_PREFIX . "accountingaccount WHERE";
if ($rowid) { if ($rowid) {
@ -78,12 +77,10 @@ class AccountingAccount extends CommonObject
dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG); dol_syslog(get_class($this) . "::fetch sql=" . $sql, LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result) {
{
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
if ($obj) if ($obj) {
{
$this->id = $obj->rowid; $this->id = $obj->rowid;
$this->rowid = $obj->rowid; $this->rowid = $obj->rowid;
$this->datec = $obj->datec; $this->datec = $obj->datec;
@ -99,18 +96,13 @@ class AccountingAccount extends CommonObject
$this->active = $obj->active; $this->active = $obj->active;
return $this->id; return $this->id;
} } else {
else
{
return 0; return 0;
} }
} } else {
else
{
dol_print_error($this->db); dol_print_error($this->db);
} }
} }
return -1; 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 * 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.formadmin.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.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/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
$langs->load("errors"); $langs->load("errors");
$langs->load("admin"); $langs->load("admin");
$langs->load("companies"); $langs->load("companies");
$langs->load("resource");
$action=GETPOST('action','alpha')?GETPOST('action','alpha'):'view'; $action=GETPOST('action','alpha')?GETPOST('action','alpha'):'view';
$confirm=GETPOST('confirm','alpha'); $confirm=GETPOST('confirm','alpha');
@ -226,7 +228,7 @@ $tabfield[21]= "code,label";
$tabfield[22]= "code,label"; $tabfield[22]= "code,label";
$tabfield[23]= "country_id,country,taux,accountancy_code_sell,accountancy_code_buy,note"; $tabfield[23]= "country_id,country,taux,accountancy_code_sell,accountancy_code_buy,note";
$tabfield[24]= "code,label"; $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[26]= "code,label,short_label";
$tabfield[27]= "code,libelle"; $tabfield[27]= "code,libelle";
$tabfield[28]= "code,label,delay,newByMonth,country_id,country"; $tabfield[28]= "code,label,delay,newByMonth,country_id,country";
@ -258,7 +260,7 @@ $tabfieldvalue[21]= "code,label";
$tabfieldvalue[22]= "code,label"; $tabfieldvalue[22]= "code,label";
$tabfieldvalue[23]= "country,taux,accountancy_code_sell,accountancy_code_buy,note"; $tabfieldvalue[23]= "country,taux,accountancy_code_sell,accountancy_code_buy,note";
$tabfieldvalue[24]= "code,label"; $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[26]= "code,label,short_label";
$tabfieldvalue[27]= "code,libelle"; $tabfieldvalue[27]= "code,libelle";
$tabfieldvalue[28]= "code,label,delay,newByMonth,country"; $tabfieldvalue[28]= "code,label,delay,newByMonth,country";
@ -290,7 +292,7 @@ $tabfieldinsert[21]= "code,label";
$tabfieldinsert[22]= "code,label"; $tabfieldinsert[22]= "code,label";
$tabfieldinsert[23]= "fk_pays,taux,accountancy_code_sell,accountancy_code_buy,note"; $tabfieldinsert[23]= "fk_pays,taux,accountancy_code_sell,accountancy_code_buy,note";
$tabfieldinsert[24]= "code,label"; $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[26]= "code,label,short_label";
$tabfieldinsert[27]= "code,libelle"; $tabfieldinsert[27]= "code,libelle";
$tabfieldinsert[28]= "code,label,delay,newByMonth,fk_country"; $tabfieldinsert[28]= "code,label,delay,newByMonth,fk_country";
@ -364,35 +366,35 @@ $tabcond[29]= ! empty($conf->projet->enabled);
// List of help for fields // List of help for fields
$tabhelp=array(); $tabhelp=array();
$tabhelp[1] = array(); $tabhelp[1] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[2] = array(); $tabhelp[2] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[3] = array(); $tabhelp[3] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[4] = array(); $tabhelp[4] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[5] = array(); $tabhelp[5] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[6] = array(); $tabhelp[6] = array('code'=>$langs->trans("EnterAnyCode"), 'position'=>$langs->trans("PositionIntoComboList"));
$tabhelp[7] = array(); $tabhelp[7] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[8] = array(); $tabhelp[8] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[9] = array(); $tabhelp[9] = array('code'=>$langs->trans("EnterAnyCode"), 'unicode'=>$langs->trans("UnicodeCurrency"));
$tabhelp[10] = array(); $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[11] = array();
$tabhelp[12] = array(); $tabhelp[12] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[13] = array(); $tabhelp[13] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[14] = array(); $tabhelp[14] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[15] = array(); $tabhelp[15] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[16] = array(); $tabhelp[16] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[17] = array(); $tabhelp[17] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[18] = array(); $tabhelp[18] = array('code'=>$langs->trans("EnterAnyCode"), 'tracking'=>$langs->trans("UrlTrackingDesc"));
$tabhelp[19] = array(); $tabhelp[19] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[20] = array(); $tabhelp[20] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[21] = array(); $tabhelp[21] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[22] = array(); $tabhelp[22] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[23] = array(); $tabhelp[23] = array();
$tabhelp[24] = array(); $tabhelp[24] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[25] = array(); $tabhelp[25] = array('type_template'=>$langs->trans("TemplateForElement"),'private'=>$langs->trans("TemplateIsVisibleByOwnerOnly"), 'position'=>$langs->trans("PositionIntoComboList"));
$tabhelp[26] = array(); $tabhelp[26] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[27] = array(); $tabhelp[27] = array('code'=>$langs->trans("EnterAnyCode"));
$tabhelp[28] = array(); $tabhelp[28] = array('delay'=>$langs->trans("MinimumNoticePeriod"), 'newByMonth'=>$langs->trans("NbAddedAutomatically"));
$tabhelp[29] = array(); $tabhelp[29] = array('code'=>$langs->trans("EnterAnyCode"), 'percent'=>$langs->trans("OpportunityPercent"), 'position'=>$langs->trans("PositionIntoComboList"));
// List of check for fields (NOT USED YET) // List of check for fields (NOT USED YET)
$tabfieldcheck=array(); $tabfieldcheck=array();
@ -468,6 +470,24 @@ if ($id == 11)
'external' => $langs->trans('External') '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") // Define localtax_typeList (used for dictionary "llx_c_tva")
$localtax_typeList = array(); $localtax_typeList = array();
@ -814,7 +834,6 @@ if ($action == 'delete')
*/ */
if ($id) if ($id)
{ {
// Complete requete recherche valeurs avec critere de tri // Complete requete recherche valeurs avec critere de tri
$sql=$tabsql[$id]; $sql=$tabsql[$id];
@ -869,9 +888,9 @@ if ($id)
else $valuetoshow=$langs->trans("Amount"); else $valuetoshow=$langs->trans("Amount");
$align='right'; $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]=='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]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3";}
if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); } if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); }
if ($fieldlist[$field]=='lang') { $valuetoshow=$langs->trans("Language"); } 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]=='pcg_subtype') { $valuetoshow=$langs->trans("Pcg_subtype"); }
if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); } if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); }
if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); } 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 if ($id == 2) // Special cas for state page
{ {
@ -924,7 +944,7 @@ if ($id)
if ($id == 4) print '<td></td>'; if ($id == 4) print '<td></td>';
print '<td colspan="4">'; print '<td colspan="4">';
print '<input type="hidden" name="id" value="'.$id.'">'; print '<input type="hidden" name="id" value="'.$id.'">';
print '&nbsp;</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Line to enter new values // 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 $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; $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>'; 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>"; print "</tr>";
$colspan=count($fieldlist)+2; $colspan=count($fieldlist)+2;
if ($id == 4) $colspan++; 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.'">* '.$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>'; print '</form>';
// List of available values in database // List of available values in database
dol_syslog("htdocs/admin/dict", LOG_DEBUG); dol_syslog("htdocs/admin/dict", LOG_DEBUG);
$resql=$db->query($sql); $resql=$db->query($sql);
@ -983,7 +1017,7 @@ if ($id)
if ($num > $listlimit) if ($num > $listlimit)
{ {
print '<tr class="none"><td align="right" colspan="'.(3+count($fieldlist)).'">'; 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>'; print '</td></tr>';
} }
@ -1013,9 +1047,9 @@ if ($id)
else $valuetoshow=$langs->trans("Amount"); else $valuetoshow=$langs->trans("Amount");
$align='right'; $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]=='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]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3"; $sortable=0; }
if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); } if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); }
if ($fieldlist[$field]=='lang') { $valuetoshow=$langs->trans("Language"); } 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]=='pcg_subtype') { $valuetoshow=$langs->trans("Pcg_subtype"); }
if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); } if ($fieldlist[$field]=='sortorder') { $valuetoshow=$langs->trans("SortOrder"); }
if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); } if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); }
if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); }
// Affiche nom du champ // Affiche nom du champ
if ($showfield) 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 $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; $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 '<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>'; print '&nbsp;<input type="submit" class="button" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>';
@ -1096,6 +1131,10 @@ if ($id)
$showfield=1; $showfield=1;
$align="left"; $align="left";
$valuetoshow=$obj->$fieldlist[$field]; $valuetoshow=$obj->$fieldlist[$field];
if ($value == 'type_template')
{
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
}
if ($value == 'element') if ($value == 'element')
{ {
$valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow; $valuetoshow = isset($elementList[$valuetoshow])?$elementList[$valuetoshow]:$valuetoshow;
@ -1392,21 +1431,24 @@ $db->close();
* @param array $fieldlist Array of fields * @param array $fieldlist Array of fields
* @param Object $obj If we show a particular record, obj is filled with record 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 $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 * @return void
*/ */
function fieldList($fieldlist,$obj='',$tabname='') function fieldList($fieldlist, $obj='', $tabname='', $context='')
{ {
global $conf,$langs,$db; global $conf,$langs,$db;
global $form; global $form;
global $region_id; global $region_id;
global $elementList,$sourceList,$localtax_typeList; global $elementList,$sourceList,$localtax_typeList;
global $bc;
$formadmin = new FormAdmin($db); $formadmin = new FormAdmin($db);
$formcompany = new FormCompany($db); $formcompany = new FormCompany($db);
foreach ($fieldlist as $field => $value) foreach ($fieldlist as $field => $value)
{ {
if ($fieldlist[$field] == 'country') { if ($fieldlist[$field] == 'country')
{
if (in_array('region_id',$fieldlist)) if (in_array('region_id',$fieldlist))
{ {
print '<td>'; 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 $form->select_country((! empty($obj->country_code)?$obj->country_code:(! empty($obj->country)?$obj->country:'')), $fieldname, '', 28);
print '</td>'; 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) 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); $country_id = (! empty($obj->$fieldlist[$field]) ? $obj->$fieldlist[$field] : 0);
@ -1428,22 +1471,32 @@ function fieldList($fieldlist,$obj='',$tabname='')
print '</td>'; print '</td>';
} }
} }
elseif ($fieldlist[$field] == 'region') { elseif ($fieldlist[$field] == 'region')
{
print '<td>'; print '<td>';
$formcompany->select_region($region_id,'region'); $formcompany->select_region($region_id,'region');
print '</td>'; print '</td>';
} }
elseif ($fieldlist[$field] == 'region_id') { elseif ($fieldlist[$field] == 'region_id')
{
$region_id = (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:0); $region_id = (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:0);
print '<td>'; print '<td>';
print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$region_id.'">'; print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$region_id.'">';
print '</td>'; print '</td>';
} }
elseif ($fieldlist[$field] == 'lang') { elseif ($fieldlist[$field] == 'lang')
{
print '<td>'; print '<td>';
print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT,'lang'); print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT,'lang');
print '</td>'; 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) // Le type de l'element (pour les type de contact)
elseif ($fieldlist[$field] == 'element') 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 '<input type="text" class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="3" name="'.$fieldlist[$field].'">';
print '</td>'; 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>'; 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])) { 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>'; 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>'; print '<td>';
$size=''; $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]=='libelle') $size='size="32" ';
if ($fieldlist[$field]=='tracking') $size='size="92" '; if ($fieldlist[$field]=='tracking') $size='size="92" ';
if ($fieldlist[$field]=='accountancy_code') $size='size="10" '; if ($fieldlist[$field]=='accountancy_code') $size='size="10" ';

View File

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

View File

@ -131,7 +131,7 @@ if ($resql)
} }
if ($conf->use_javascript_ajax) 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); $data=array('series'=>$dataseries);
dol_print_graph('stats',300,180,$data,1,'pie',1); dol_print_graph('stats',300,180,$data,1,'pie',1);
print '</td></tr>'; print '</td></tr>';

View File

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

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro> * 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("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("OtherInformations"),$_SERVER["PHP_SELF"],"",$param,"","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Source"),$_SERVER["PHP_SELF"],"",$param,"",'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Source"),$_SERVER["PHP_SELF"],"",$param,"",'align="center"',$sortfield,$sortorder);
// Date sending // Date sending
if ($object->statut < 2) if ($object->statut < 2)
{ {
print '<td class="liste_titre">&nbsp;</td>'; print_liste_field_titre('');
} }
else 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("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($langs->trans("Status"),$_SERVER["PHP_SELF"],"mc.statut",$param,'','align="right"',$sortfield,$sortorder);
print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch ');
print '</tr>'; print '</tr>';
// Ligne des champs de filtres // Ligne des champs de filtres
@ -458,7 +455,6 @@ if ($object->fetch($id) >= 0)
//Search Icon //Search Icon
print '<td class="liste_titre" align="right">'; 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 '<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 '<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 '</td>';
print '</tr>'; print '</tr>';
@ -518,9 +514,6 @@ if ($object->fetch($id) >= 0)
{ {
print '<td align="center">&nbsp;</td>'; print '<td align="center">&nbsp;</td>';
print '<td align="right" class="nowrap">'.$langs->trans("MailingStatusNotSent"); 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>'; print '</td>';
} }
else else
@ -532,7 +525,14 @@ if ($object->fetch($id) >= 0)
} }
//Sreach Icon //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>'; print '</tr>';
$i++; $i++;
@ -540,7 +540,7 @@ if ($object->fetch($id) >= 0)
} }
else 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>"; print "</table><br>";

View File

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

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
@ -272,7 +272,7 @@ if ($result)
$langs->load("commercial"); $langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">'; $moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $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>'; $moreforfilter.='</div>';
} }
// If the user can view prospects other than his' // If the user can view prospects other than his'
@ -280,7 +280,7 @@ if ($result)
{ {
$moreforfilter.='<div class="divsearchfield">'; $moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $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>'; $moreforfilter.='</div>';
} }
// If the user can view prospects other than his' // If the user can view prospects other than his'

View File

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

View File

@ -46,6 +46,7 @@ $orderyear=GETPOST("orderyear","int");
$ordermonth=GETPOST("ordermonth","int"); $ordermonth=GETPOST("ordermonth","int");
$deliveryyear=GETPOST("deliveryyear","int"); $deliveryyear=GETPOST("deliveryyear","int");
$deliverymonth=GETPOST("deliverymonth","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=GETPOST('search_ref','alpha')!=''?GETPOST('search_ref','alpha'):GETPOST('sref','alpha');
$search_ref_customer=GETPOST('search_ref_customer','alpha'); $search_ref_customer=GETPOST('search_ref_customer','alpha');
$search_company=GETPOST('search_company','alpha'); $search_company=GETPOST('search_company','alpha');
@ -79,6 +80,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$search_categ=''; $search_categ='';
$search_user=''; $search_user='';
$search_sale=''; $search_sale='';
$search_product_category='';
$search_ref=''; $search_ref='';
$search_ref_customer=''; $search_ref_customer='';
$search_company=''; $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"; $help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
llxHeader('',$langs->trans("Orders"),$help_url); 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.= ' 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.= ' FROM '.MAIN_DB_PREFIX.'societe as s';
$sql.= ', '.MAIN_DB_PREFIX.'commande as c'; $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 // 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_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if ($search_user > 0) if ($search_user > 0)
@ -128,7 +134,8 @@ if ($search_user > 0)
} }
$sql.= ' WHERE c.fk_soc = s.rowid'; $sql.= ' WHERE c.fk_soc = s.rowid';
$sql.= ' AND c.entity IN ('.getEntity('commande', 1).')'; $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 (!$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 ($search_ref) $sql .= natural_search('c.ref', $search_ref);
if ($sall) $sql .= natural_search(array('c.ref', 'c.note_private'), $sall); 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) if ($user->rights->societe->client->voir || $socid)
{ {
$langs->load("commercial"); $langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $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.=' &nbsp; &nbsp; &nbsp; '; $moreforfilter.='</div>';
} }
// If the user can view prospects other than his' // If the user can view prospects other than his'
if ($user->rights->societe->client->voir || $socid) if ($user->rights->societe->client->voir || $socid)
{ {
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$form->select_dolusers($search_user,'search_user',1); $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)) if (! empty($moreforfilter))
{ {
@ -311,7 +331,10 @@ if ($resql)
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';
print '<input class="flat" type="text" size="6" name="search_total_ht" value="'.$search_total_ht.'">'; print '<input class="flat" type="text" size="6" name="search_total_ht" value="'.$search_total_ht.'">';
print '</td>'; 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 '<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 '<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"; print "</td></tr>\n";

View File

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

View File

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

View File

@ -2721,7 +2721,10 @@ class Facture extends CommonInvoice
$dir = dol_buildpath($reldir."core/modules/facture/"); $dir = dol_buildpath($reldir."core/modules/facture/");
// Load file with numbering class (if found) // 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 // For compatibility
@ -2734,8 +2737,11 @@ class Facture extends CommonInvoice
foreach ($conf->file->dol_document_root as $dirroot) foreach ($conf->file->dol_document_root as $dirroot)
{ {
$dir = $dirroot."/core/modules/facture/"; $dir = $dirroot."/core/modules/facture/";
// Load file with numbering class (if found) // 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'); $confirm=GETPOST('confirm','alpha');
$lineid=GETPOST('lineid','int'); $lineid=GETPOST('lineid','int');
$userid=GETPOST('userid','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_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','alpha');
$search_refcustomer=GETPOST('search_refcustomer','alpha'); $search_refcustomer=GETPOST('search_refcustomer','alpha');
$search_societe=GETPOST('search_societe','alpha'); $search_societe=GETPOST('search_societe','alpha');
@ -121,6 +122,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$search_categ=''; $search_categ='';
$search_user=''; $search_user='';
$search_sale=''; $search_sale='';
$search_product_category='';
$search_ref=''; $search_ref='';
$search_refcustomer=''; $search_refcustomer='';
$search_societe=''; $search_societe='';
@ -144,8 +146,8 @@ $formfile = new FormFile($db);
$bankaccountstatic=new Account($db); $bankaccountstatic=new Account($db);
$facturestatic=new Facture($db); $facturestatic=new Facture($db);
if (! $sall) $sql = 'SELECT'; $sql = 'SELECT';
else $sql = 'SELECT DISTINCT'; 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.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.datef as df, f.date_lim_reglement as datelimite,';
$sql.= ' f.paye as paye, f.fk_statut,'; $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'; $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'; 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'; 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 // 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_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
if ($search_user > 0) if ($search_user > 0)
@ -165,7 +169,8 @@ if ($search_user > 0)
$sql.= ' WHERE f.fk_soc = s.rowid'; $sql.= ' WHERE f.fk_soc = s.rowid';
$sql.= " AND f.entity = ".$conf->entity; $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 (! $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)
{ {
if ($userid == -1) $sql.=' AND f.fk_user_author IS NULL'; if ($userid == -1) $sql.=' AND f.fk_user_author IS NULL';
@ -275,16 +280,30 @@ if ($resql)
if ($user->rights->societe->client->voir || $socid) if ($user->rights->societe->client->voir || $socid)
{ {
$langs->load("commercial"); $langs->load("commercial");
$moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; $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.=' &nbsp; &nbsp; &nbsp; '; $moreforfilter.='</div>';
} }
// If the user can view prospects other than his' // If the user can view prospects other than his'
if ($user->rights->societe->client->voir || $socid) if ($user->rights->societe->client->voir || $socid)
{ {
$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; $moreforfilter.='<div class="divsearchfield">';
$moreforfilter.=$form->select_dolusers($search_user,'search_user',1); $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) if ($moreforfilter)
{ {
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
@ -330,7 +349,10 @@ if ($resql)
print '<td class="liste_titre"></td>'; 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" 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"></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 '<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 '<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"; 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) 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"; $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"; 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"; $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) while ($i < $num && $i < $max)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$expensereportstatic->ref=$obj->rowid;
$expensereportstatic->id=$obj->rowid; $expensereportstatic->id=$obj->rowid;
$expensereportstatic->ref=$obj->ref;
$userstatic->id=$obj->uid; $userstatic->id=$obj->uid;
$userstatic->lastname=$obj->lastname; $userstatic->lastname=$obj->lastname;
$userstatic->firstname=$obj->firstname; $userstatic->firstname=$obj->firstname;

View File

@ -221,7 +221,26 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->banque->c
} }
else 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); 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(); $accounts = array();
@ -350,7 +381,7 @@ if ($action == 'new')
print '<input type="hidden" name="action" value="new">'; print '<input type="hidden" name="action" value="new">';
dol_fiche_head(); dol_fiche_head();
print '<table class="border" width="100%">'; 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>'; //print '<tr><td width="30%">'.$langs->trans('Date').'</td><td width="70%">'.dol_print_date($now,'day').'</td></tr>';
// Filter // Filter
@ -361,9 +392,9 @@ if ($action == 'new')
$form->select_comptes($filteraccountid,'accountid',0,'courant <> 2',1); $form->select_comptes($filteraccountid,'accountid',0,'courant <> 2',1);
print '</td></tr>'; print '</td></tr>';
print '</table>'; print '</table>';
dol_fiche_end(); dol_fiche_end();
print '<div class="center">'; print '<div class="center">';
print '<input type="submit" class="button" name="filter" value="'.dol_escape_htmltag($langs->trans("ToFilter")).'">'; print '<input type="submit" class="button" name="filter" value="'.dol_escape_htmltag($langs->trans("ToFilter")).'">';
if ($filterdate || $filteraccountid > 0) 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 = "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.= " b.amount, ba.label, b.emetteur, b.num_chq, b.banque";
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b,"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
$sql.= " ".MAIN_DB_PREFIX."bank_account as ba"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account as ba ON (b.fk_account = ba.rowid)";
$sql.= " WHERE b.fk_type = 'CHQ'"; $sql.= " WHERE b.fk_type = 'CHQ'";
$sql.= " AND b.fk_account = ba.rowid";
$sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")"; $sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")";
$sql.= " AND b.fk_bordereau = 0"; $sql.= " AND b.fk_bordereau = 0";
$sql.= " AND b.amount > 0"; $sql.= " AND b.amount > 0";
@ -599,12 +629,11 @@ else
// Liste des cheques // Liste des cheques
$sql = "SELECT b.rowid, b.amount, b.num_chq, b.emetteur,"; $sql = "SELECT b.rowid, b.amount, b.num_chq, b.emetteur,";
$sql.= " b.dateo as date, b.datec as datec, b.banque,"; $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.= " 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.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement as p ON p.fk_bank = b.rowid";
$sql.= " WHERE ba.rowid = b.fk_account"; $sql.= " WHERE ba.entity IN (".getEntity('bank_account', 1).")";
$sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")";
$sql.= " AND b.fk_type= 'CHQ'"; $sql.= " AND b.fk_type= 'CHQ'";
$sql.= " AND b.fk_bordereau = ".$object->id; $sql.= " AND b.fk_bordereau = ".$object->id;
$sql.= " ORDER BY $sortfield $sortorder"; $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("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("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($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"; print "</tr>\n";
$i=1; $i=1;
$var=false; $var=false;
@ -654,13 +684,25 @@ else
print '&nbsp;'; print '&nbsp;';
} }
print '</td>'; 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 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>'; print '</tr>';
$var=!$var; $var=!$var;

View File

@ -25,6 +25,7 @@
* \brief File with class to manage cheque delivery receipts * \brief File with class to manage cheque delivery receipts
*/ */
require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
/** /**
@ -647,17 +648,83 @@ class RemiseCheque extends CommonObject
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
$this->updateAmount(); $this->updateAmount();
} }
else else
{ {
$this->errno = -1032; $this->errno = -1032;
dol_syslog("RemiseCheque::removeCheck ERREUR UPDATE ($this->errno)"); dol_syslog("RemiseCheque::removeCheck ERREUR UPDATE ($this->errno)");
} }
} }
return 0; 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 * Charge les proprietes ref_previous et ref_next
* *
@ -747,7 +814,7 @@ class RemiseCheque extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."bordereau_cheque"; $sql = "UPDATE ".MAIN_DB_PREFIX."bordereau_cheque";
$sql.= " SET number = '".$number."'" ; $sql.= " SET number = '".$number."'" ;
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dol_syslog("RemiseCheque::set_number", LOG_DEBUG); dol_syslog("RemiseCheque::set_number", LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)

View File

@ -78,11 +78,12 @@ class Paiement extends CommonObject
/** /**
* Load payment from database * Load payment from database
* *
* @param int $id Id of payment to get * @param int $id Id of payment to get
* @param int $ref Ref of payment to get (same as $id) * @param string $ref Ref of payment to get (currently ref = id but this may change in future)
* @return int <0 if KO, 0 if not found, >0 if OK * @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 = '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,'; $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.= ' 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.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid ';
$sql.= ' WHERE p.fk_paiement = c.id'; $sql.= ' WHERE p.fk_paiement = c.id';
if ($ref) if ($id > 0)
$sql.= ' AND p.rowid = '.$ref;
else
$sql.= ' AND p.rowid = '.$id; $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); dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
@ -116,7 +119,8 @@ class Paiement extends CommonObject
$this->type_code = $obj->type_code; $this->type_code = $obj->type_code;
$this->statut = $obj->statut; $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->bank_line = $obj->fk_bank;
$this->db->free($result); $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 * \brief Information sur l'objet
* \param id id du paiement dont il faut afficher les infos * \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="chid" value="'.$chid.'">';
print '<input type="hidden" name="action" value="add_payment">'; print '<input type="hidden" name="action" value="add_payment">';
dol_fiche_head('', '');
print '<table cellspacing="0" class="border" width="100%" cellpadding="2">'; print '<table cellspacing="0" class="border" width="100%" cellpadding="2">';
print "<tr class=\"liste_titre\"><td colspan=\"3\">".$langs->trans("SocialContribution")."</td>"; print "<tr class=\"liste_titre\"><td colspan=\"3\">".$langs->trans("SocialContribution")."</td>";
@ -235,7 +237,7 @@ if ($_GET["action"] == 'create')
print '</table>'; print '</table>';
print '<br>'; dol_fiche_end();
/* /*
* Autres charges impayees * Autres charges impayees

View File

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

View File

@ -72,8 +72,8 @@ function tva_coll($db,$y,$q)
$sql.= " AND f.fk_statut in (1,2)"; $sql.= " AND f.fk_statut in (1,2)";
$sql.= " AND f.rowid = d.fk_facture "; $sql.= " AND f.rowid = d.fk_facture ";
$sql.= " AND date_format(f.datef,'%Y') = '".$y."'"; $sql.= " AND date_format(f.datef,'%Y') = '".$y."'";
$sql.= " AND (round(date_format(f.datef,'%m') > ".(($q-1)*3); $sql.= " AND (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*3).")";
$sql.= " ORDER BY rate, facid"; $sql.= " ORDER BY rate, facid";
} }
@ -131,7 +131,7 @@ function tva_paye($db, $y,$q)
if ($conf->global->ACCOUNTING_MODE == "CREANCES-DETTES") if ($conf->global->ACCOUNTING_MODE == "CREANCES-DETTES")
{ {
// Si on paye la tva sur les factures dues (non brouillon) // 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.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
$sql.= ", ".MAIN_DB_PREFIX."facture_fourn_det as d" ; $sql.= ", ".MAIN_DB_PREFIX."facture_fourn_det as d" ;
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
@ -222,8 +222,7 @@ if ($conf->global->ACCOUNTING_MODE == "CREANCES-DETTES")
$subtot_coll_vat = 0; $subtot_coll_vat = 0;
$subtot_paye_total = 0; $subtot_paye_total = 0;
$subtot_paye_vat = 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>"; 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; $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 $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 $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 $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 * @return string HTML select string
* @see select_dolgroups * @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; global $conf,$user,$langs;
@ -1339,7 +1340,7 @@ class Form
$nodatarole=($comboenhancement?' data-role="none"':''); $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_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"; if ($show_every) $out.= '<option value="-2"'.(($selected==-2)?' selected':'').'>-- '.$langs->trans("Everybody").' --</option>'."\n";
@ -3167,6 +3168,18 @@ class Form
$i++; $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') else if ($input['type'] == 'other')
{ {
$more.='<tr><td>'; $more.='<tr><td>';
@ -4296,7 +4309,7 @@ class Form
$retstring.='</button> '; $retstring.='</button> ';
} }
} }
if (! empty($nooutput)) return $retstring; if (! empty($nooutput)) return $retstring;
print $retstring; print $retstring;

View File

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

View File

@ -361,9 +361,10 @@ class FormOther
* @param User $user Object user * @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 $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 int $showempty 1=show also an empty value
* @param string $morecss More CSS
* @return string Html combo list code * @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; global $conf,$langs;
$langs->load('users'); $langs->load('users');
@ -383,7 +384,7 @@ class FormOther
} }
} }
// Select each sales and print them in a select input // 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>'; if ($showempty) $out.='<option value="0">&nbsp;</option>';
// Get list of users allowed to be viewed // 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 $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 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 $maxlength Maximum length of label
* @param int $option_only Return only html options lines without the select tag * @param int $option_only Return only html options lines without the select tag
* @param int $show_empty Add an empty line * @param int $show_empty Add an empty line
@ -270,7 +270,7 @@ class FormProjets
* @param int $disabled Disabled * @param int $disabled Disabled
* @return int Nber of project if OK, <0 if KO * @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; global $user,$conf,$langs;
@ -289,8 +289,11 @@ class FormProjets
} }
// Search all projects // 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 = '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.= ' 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.= " WHERE p.entity = ".$conf->entity;
$sql.= " AND t.fk_projet = p.rowid"; $sql.= " AND t.fk_projet = p.rowid";
if ($projectsListId !== false) $sql.= " AND p.rowid IN (".$projectsListId.")"; if ($projectsListId !== false) $sql.= " AND p.rowid IN (".$projectsListId.")";
@ -312,7 +315,7 @@ class FormProjets
$comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus); $comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
$out.=$comboenhancement; $out.=$comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':''); $nodatarole=($comboenhancement?' data-role="none"':'');
$minmax='minwidth100'; $minmax='minwidth200';
} }
if (empty($option_only)) { if (empty($option_only)) {
@ -346,6 +349,8 @@ class FormProjets
//else $labeltoshow.=' ('.$langs->trans("Private").')'; //else $labeltoshow.=' ('.$langs->trans("Private").')';
$labeltoshow.=' '.dol_trunc($obj->title,$maxlength); $labeltoshow.=' '.dol_trunc($obj->title,$maxlength);
if ($obj->name) $labeltoshow.=' ('.$obj->name.')';
$disabled=0; $disabled=0;
if ($obj->fk_statut == 0) if ($obj->fk_statut == 0)
{ {
@ -512,7 +517,7 @@ class FormProjets
* *
* @param string $htmlname HTML name * @param string $htmlname HTML name
* @param int $preselected Preselected * @param int $preselected Preselected
* @param int $shwoempty Add an empty line * @param int $showempty Add an empty line
* @param int $useshortlabel Use short label * @param int $useshortlabel Use short label
* @return int|string The HTML select list of element or '' if nothing or -1 if KO * @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 $target Target lien
* @param string $mainmenu Main menu ('home', 'companies', 'products', ...) * @param string $mainmenu Main menu ('home', 'companies', 'products', ...)
* @param string $leftmenu Left menu ('setup', 'system', 'admintools', ...) * @param string $leftmenu Left menu ('setup', 'system', 'admintools', ...)
* @param int $position Position (not used yet)
* @return void * @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 $target Target lien
* @param string $mainmenu Main menu ('home', 'companies', 'products', ...) * @param string $mainmenu Main menu ('home', 'companies', 'products', ...)
* @param string $leftmenu Left menu ('setup', 'system', 'admintools', ...) * @param string $leftmenu Left menu ('setup', 'system', 'admintools', ...)
* @param int $position Position (not used yet)
* @return void * @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_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)); $array_end = array_slice($this->liste,($idafter+1));
$this->liste=array_merge($array_start,$array_new,$array_end); $this->liste=array_merge($array_start,$array_new,$array_end);
} }

View File

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

View File

@ -57,7 +57,8 @@ function showDP(base,dateFieldID,format,codelang)
showDP.box=document.createElement("div"); showDP.box=document.createElement("div");
showDP.box.className="bodyline"; 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.position="absolute";
showDP.box.style.top=thetop + "px"; showDP.box.style.top=thetop + "px";
showDP.box.style.left=theleft + "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 $file Page URL (in most cases provided with $_SERVER["PHP_SELF"])
* @param string $options Other url paramaters to propagate ("" by default) * @param string $options Other url paramaters to propagate ("" by default)
* @param integer $nextpage Do we show a next page button * @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. * @param string $afterarrows HTML content to show after arrows. Must NOT contains '<li> </li>' tags.
* @return void * @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; 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>'; 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>'; 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?' ':''); if ($betweenarrows)
print $betweenarrows; {
print $betweenarrows;
}
if ($nextpage > 0) if ($nextpage > 0)
{ {
if (empty($conf->dol_use_jmobile)) print '<li class="pagination"><a class="paginationnext" href="'.$file.'?page='.($page+1).$options.'">></a></li>'; 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 $nom Name of report
* @param string $variante Link for alternate report * @param string $variante Link for alternate report
* @param string $period Period of report * @param string $period Period of report
* @param string $periodlink Link to switch period * @param string $periodlink Link to switch period
* @param string $description Description * @param string $description Description
* @param timestamp|integer $builddate Date generation * @param timestamp|integer $builddate Date generation
* @param string $exportlink Link for export or '' * @param string $exportlink Link for export or ''
* @param array $moreparam Array with list of params to add into form * @param array $moreparam Array with list of params to add into form
* @param string $calcmode Calculation mode * @param string $calcmode Calculation mode
* @return void * @return void
*/ */
function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='') 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"].'">'; print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
foreach($moreparam as $key => $value) 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">'; 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 = "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.".$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.= " 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.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " 0 as payment_id, 0 as payment_amount"; $sql.= " 0 as payment_id, 0 as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity; $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)"; 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)"; else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture; $sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
if ($y && $m) if ($y && $m)
{ {
$sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; $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 = "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.".$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.= " 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.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " 0 as payment_id, 0 as payment_amount"; $sql.= " 0 as payment_id, 0 as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity; $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)"; 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)"; else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture; $sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
if ($y && $m) if ($y && $m)
{ {
$sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; $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']]['dtotal_ttc'][] = $assoc['total_ttc'];
$list[$assoc['rate']]['dtype'][] = $assoc['dtype']; $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_start'][] = $db->jdate($assoc['date_start']);
$list[$assoc['rate']]['ddate_end'][] = $db->jdate($assoc['date_end']); $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 = "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.".$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.= " 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.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql.= " 0 as payment_id, 0 as payment_amount"; $sql.= " 0 as payment_id, 0 as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ;
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity; $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)"; 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)"; else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture; $sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
if ($y && $m) if ($y && $m)
{ {
$sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; $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 = "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.".$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.= " 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.= " 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.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount";
$sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
$sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,";
$sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,";
$sql.= " ".MAIN_DB_PREFIX."societe as s,";
$sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql.= " WHERE f.entity = " . $conf->entity; $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)"; 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)"; else $sql.= " AND f.type IN (0,1,2,3,5)";
$sql.= " AND f.rowid = d.".$fk_facture; $sql.= " AND f.rowid = d.".$fk_facture;
$sql.= " AND s.rowid = f.fk_soc";
$sql.= " AND pf.".$fk_facture2." = f.rowid"; $sql.= " AND pf.".$fk_facture2." = f.rowid";
$sql.= " AND pa.rowid = pf.".$fk_payment; $sql.= " AND pa.rowid = pf.".$fk_payment;
if ($y && $m) 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']]['dtotal_ttc'][] = $assoc['total_ttc'];
$list[$assoc['rate']]['dtype'][] = $assoc['dtype']; $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_start'][] = $db->jdate($assoc['date_start']);
$list[$assoc['rate']]['ddate_end'][] = $db->jdate($assoc['date_end']); $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 DoliDB $db Database handler
* @param string $atarget Target (Example: '' or '_top') * @param string $atarget Target (Example: '' or '_top')
* @param int $type_user 0=Menu for backoffice, 1=Menu for front office * @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 array $menu Object Menu to return back list of menu entries
* @param int $noout Disable output (Initialise &$menu only). * @param int $noout Disable output (Initialise &$menu only).
* @return int 0 * @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)) if (! empty($conf->ficheinter->enabled))
{ {
$langs->load("interventions"); $langs->load("interventions");
$newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("Interventions"), 0, $user->rights->ficheinter->lire, '', $mainmenu, 'ficheinter'); $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); $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); $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; $i=0;
foreach ($this->tabs as $key => $value) 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 = "INSERT INTO ".MAIN_DB_PREFIX."const (";
$sql.= "name"; $sql.= "name";
@ -1370,10 +1381,11 @@ print $sql;
$menu->target=$this->menu[$key]['target']; $menu->target=$this->menu[$key]['target'];
$menu->user=$this->menu[$key]['user']; $menu->user=$this->menu[$key]['user'];
$menu->enabled=isset($this->menu[$key]['enabled'])?$this->menu[$key]['enabled']:0; $menu->enabled=isset($this->menu[$key]['enabled'])?$this->menu[$key]['enabled']:0;
$menu->position=$this->menu[$key]['position'];
if (! $err) if (! $err)
{ {
$result=$menu->create($user); $result=$menu->create($user); // Save menu entry into table llx_menu
if ($result > 0) if ($result > 0)
{ {
$this->menu[$key]['rowid']=$result; $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. '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. '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 '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++; $r++;
@ -160,7 +161,8 @@ class modAskPriceSupplier extends DolibarrModules
'langs'=>'askpricesupplier', 'langs'=>'askpricesupplier',
'enabled'=>'$conf->askpricesupplier->enabled', 'enabled'=>'$conf->askpricesupplier->enabled',
'perms'=>'$user->rights->askpricesupplier->creer', 'perms'=>'$user->rights->askpricesupplier->creer',
'user'=>2 'user'=>2,
'position'=>31
); );
$r++; $r++;
@ -172,7 +174,8 @@ class modAskPriceSupplier extends DolibarrModules
'langs'=>'askpricesupplier', 'langs'=>'askpricesupplier',
'enabled'=>'$conf->askpricesupplier->enabled', 'enabled'=>'$conf->askpricesupplier->enabled',
'perms'=>'$user->rights->askpricesupplier->lire', 'perms'=>'$user->rights->askpricesupplier->lire',
'user'=>2 'user'=>2,
'position'=>32
); );
$r++; $r++;
} }

View File

@ -75,6 +75,8 @@
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>"> <input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
<input type="hidden" name="action" value="add"> <input type="hidden" name="action" value="add">
<?php dol_fiche_head(); ?>
<table summary="listofattributes" class="border centpercent"> <table summary="listofattributes" class="border centpercent">
<!-- Label --> <!-- 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> <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 } ?> <?php } ?>
</table> </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> <input type="submit" name="button" class="button" value="<?php echo $langs->trans("Cancel"); ?>"></div>
</form> </form>

View File

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

View File

@ -1561,8 +1561,11 @@ else if ($id || $ref)
$file=$fileparams['fullname']; $file=$fileparams['fullname'];
} }
print '<div class="clearboth"></div>';
print '<br>'; print '<br>';
print_titre($langs->trans('SendShippingByEMail')); print_fiche_titre($langs->trans('SendShippingByEMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail // Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@ -1638,7 +1641,7 @@ else if ($id || $ref)
// Show form // Show form
print $formmail->get_form(); print $formmail->get_form();
print '<br>'; dol_fiche_end();
} }
if ($action != 'presend' && ! empty($origin) && $object->$origin->id) 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_ht = 0;
$total_total_ttc = 0; $total_total_ttc = 0;
$total_total_tva = 0; $total_total_tva = 0;
$expensereportstatic=new ExpenseReport($db);
if($num > 0) if($num > 0)
{ {
while ($i < min($num,$limit)) while ($i < min($num,$limit))
{ {
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
$expensereportstatic->id=$objp->rowid;
$expensereportstatic->ref=$objp->ref;
$var=!$var; $var=!$var;
print "<tr ".$bc[$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_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="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>'; 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']; $file=$fileparams['fullname'];
} }
print '<div class="clearboth"></div>';
print '<br>'; print '<br>';
print_titre($langs->trans('SendInterventionByMail')); print_fiche_titre($langs->trans('SendInterventionByMail'));
dol_fiche_head('');
// Create form object // Create form object
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; 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 $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); $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; $line->id = $obj->rowid;
$this->lines[$i]->rowid = $obj->rowid; $line->rowid = $obj->rowid;
$this->lines[$i]->description = $obj->description; $line->description = $obj->description;
$this->lines[$i]->product_ref = $obj->product_ref; // Internal reference $line->product_ref = $obj->product_ref;
$this->lines[$i]->ref = $obj->product_ref; // deprecated. $line->ref = $obj->product_ref;
$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 $line->ref_supplier = $obj->ref_supplier;
$this->lines[$i]->libelle = $obj->label; // Deprecated $line->libelle = $obj->label;
$this->lines[$i]->label = $obj->label; // This field may contains label of product (when invoice create from order) $line->label = $obj->label;
$this->lines[$i]->product_desc = $obj->product_desc; // Description du produit $line->product_desc = $obj->product_desc;
$this->lines[$i]->subprice = $obj->pu_ht; $line->subprice = $obj->pu_ht;
$this->lines[$i]->pu_ht = $obj->pu_ht; $line->pu_ht = $obj->pu_ht;
$this->lines[$i]->pu_ttc = $obj->pu_ttc; $line->pu_ttc = $obj->pu_ttc;
$this->lines[$i]->tva_tx = $obj->tva_tx; $line->tva_tx = $obj->tva_tx;
$this->lines[$i]->localtax1_tx = $obj->localtax1_tx; $line->localtax1_tx = $obj->localtax1_tx;
$this->lines[$i]->localtax2_tx = $obj->localtax2_tx; $line->localtax2_tx = $obj->localtax2_tx;
$this->lines[$i]->qty = $obj->qty; $line->qty = $obj->qty;
$this->lines[$i]->remise_percent = $obj->remise_percent; $line->remise_percent = $obj->remise_percent;
$this->lines[$i]->tva = $obj->total_tva; $line->tva = $obj->total_tva;
$this->lines[$i]->total_ht = $obj->total_ht; $line->total_ht = $obj->total_ht;
$this->lines[$i]->total_tva = $obj->total_tva; $line->total_tva = $obj->total_tva;
$this->lines[$i]->total_localtax1 = $obj->total_localtax1; $line->total_localtax1 = $obj->total_localtax1;
$this->lines[$i]->total_localtax2 = $obj->total_localtax2; $line->total_localtax2 = $obj->total_localtax2;
$this->lines[$i]->total_ttc = $obj->total_ttc; $line->total_ttc = $obj->total_ttc;
$this->lines[$i]->fk_product = $obj->fk_product; $line->fk_product = $obj->fk_product;
$this->lines[$i]->product_type = $obj->product_type; $line->product_type = $obj->product_type;
$this->lines[$i]->product_label = $obj->label; $line->product_label = $obj->label;
$this->lines[$i]->info_bits = $obj->info_bits; $line->info_bits = $obj->info_bits;
$this->lines[$i]->fk_parent_line = $obj->fk_parent_line; $line->fk_parent_line = $obj->fk_parent_line;
$this->lines[$i]->special_code = $obj->special_code; $line->special_code = $obj->special_code;
$this->lines[$i]->rang = $obj->rang; $line->rang = $obj->rang;
$this->lines[$i]->fk_unit = $obj->fk_unit; $line->fk_unit = $obj->fk_unit;
$this->lines[$i] = $line;
$i++; $i++;
} }
@ -1368,53 +1370,25 @@ class FactureFournisseur extends CommonInvoice
*/ */
function deleteline($rowid, $notrigger=0) function deleteline($rowid, $notrigger=0)
{ {
global $user, $langs, $conf; if (!$rowid) {
$rowid = $this->id;
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 (! $error) $line = new SupplierInvoiceLine($this->db);
{
// 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();
}
}
if (! $error) if ($line->fetch($rowid) < 1) {
{ return -1;
// Mise a jour prix facture }
$result=$this->update_price();
}
if (! $error) $res = $line->delete($notrigger);
{
$this->db->commit(); if ($res < 1) {
return 1; $this->errors[] = $line->error;
} } else {
else $res = $this->update_price();
{ }
$this->db->rollback();
return -1; return $res;
}
} }
@ -1905,13 +1879,26 @@ class SupplierInvoiceLine extends CommonObjectLine
* @see product_ref * @see product_ref
*/ */
public $ref; public $ref;
/**
* Internal ref
* @var string
*/
public $product_ref; 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; public $ref_supplier;
/** /**
* @deprecated * @deprecated
* @see label * @see label
*/ */
public $libelle; public $libelle;
/**
* Product description
* @var string
*/
public $product_desc; public $product_desc;
/** /**
@ -1946,6 +1933,7 @@ class SupplierInvoiceLine extends CommonObjectLine
/** /**
* Product label * Product label
* This field may contains label of product (when invoice create from order)
* @var string * @var string
*/ */
var $label; var $label;
@ -1968,6 +1956,24 @@ class SupplierInvoiceLine extends CommonObjectLine
*/ */
public $fk_prev_id; 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 * Constructor
* *
@ -1978,6 +1984,116 @@ class SupplierInvoiceLine extends CommonObjectLine
$this->db= $db; $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') 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); $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']; $file=$fileparams['fullname'];
} }
print '<div class="clearboth"></div>';
print '<br>'; print '<br>';
print_fiche_titre($langs->trans('SendOrderByMail'));
print_titre($langs->trans('SendOrderByMail')); dol_fiche_head('');
// Cree l'objet formulaire mail // Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@ -2367,7 +2369,7 @@ elseif (! empty($object->id))
// Show form // Show form
print $formmail->get_form(); print $formmail->get_form();
print '<br>'; dol_fiche_end();
} }
/* /*
* Action webservice * Action webservice

View File

@ -2313,6 +2313,11 @@ else
print '<div class="tabsAction">'; 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 // Modify a validated invoice with no payments
if ($object->statut == FactureFournisseur::STATUS_VALIDATED && $action != 'edit' && $object->getSommePaiement() == 0 && $user->rights->fournisseur->facture->creer) 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 '</div></div></div>';
//print '</td></tr></table>'; //print '</td></tr></table>';
} }
}
} }
/* /*
* Show mail form * Show mail form
@ -2474,8 +2480,11 @@ else
$file=$fileparams['fullname']; $file=$fileparams['fullname'];
} }
print '<div class="clearboth"></div>';
print '<br>'; print '<br>';
print_titre($langs->trans('SendBillByMail')); print_fiche_titre($langs->trans('SendBillByMail'));
dol_fiche_head('');
// Cree l'objet formulaire mail // Cree l'objet formulaire mail
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
@ -2539,7 +2548,7 @@ else
// Show form // Show form
print $formmail->get_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>'; 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>'; $htmltext.=$langs->trans("SourceRequired").': <b>'.yn(preg_match('/\*$/',$label)).'</b><br>';
$example=$objimport->array_import_examplevalues[0][$code]; $example=$objimport->array_import_examplevalues[0][$code];
// Example
if (empty($objimport->array_import_convertvalue[0][$code])) // If source file does not need convertion 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>'; 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']=='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>'; 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>'; $htmltext.='<br>';
// Target field info // Target field info
$htmltext.='<b><u>'.$langs->trans("FieldTarget").'</u></b><br>'; $htmltext.='<b><u>'.$langs->trans("FieldTarget").'</u></b><br>';

View File

@ -489,11 +489,11 @@ IMG;
$name=preg_replace('/\.odt/i', '', $name); $name=preg_replace('/\.odt/i', '', $name);
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT)) 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 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_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=مقترحات تجارية إدارة Module20Desc=مقترحات تجارية إدارة
Module22Name=كتلة بالبريد الإلكتروني Module22Name=كتلة بالبريد الإلكتروني
Module22Desc=البريد الإلكتروني الدمار إدارة Module22Desc=البريد الإلكتروني الدمار إدارة
Module23Name= طاقة Module23Name=طاقة
Module23Desc= مراقبة استهلاك الطاقة Module23Desc=مراقبة استهلاك الطاقة
Module25Name=طلبات الزبائن Module25Name=طلبات الزبائن
Module25Desc=طلبات الزبائن إدارة Module25Desc=طلبات الزبائن إدارة
Module30Name=فواتير Module30Name=فواتير
@ -492,7 +492,7 @@ Module400Desc=Management of projects, opportunities or leads. You can then assig
Module410Name=Webcalendar Module410Name=Webcalendar
Module410Desc=Webcalendar التكامل Module410Desc=Webcalendar التكامل
Module500Name=Special expenses 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 Module510Name=Salaries
Module510Desc=Management of employees salaries and payments Module510Desc=Management of employees salaries and payments
Module520Name=Loan 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) Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
Module700Name=التبرعات Module700Name=التبرعات
Module700Desc=التبرعات إدارة Module700Desc=التبرعات إدارة
Module770Name=Expense Report Module770Name=Expense reports
Module770Desc=Management and claim expense reports (transportation, meal, ...) Module770Desc=Management and claim expense reports (transportation, meal, ...)
Module1120Name=Supplier commercial proposal Module1120Name=Supplier commercial proposal
Module1120Desc=Request supplier commercial proposal and prices Module1120Desc=Request supplier commercial proposal and prices
@ -579,7 +579,7 @@ Permission32=إنشاء / تعديل المنتجات
Permission34=حذف المنتجات Permission34=حذف المنتجات
Permission36=انظر / إدارة المنتجات المخفية Permission36=انظر / إدارة المنتجات المخفية
Permission38=منتجات التصدير 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=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع
Permission44=حذف مشاريع Permission44=حذف مشاريع
Permission61=قراءة التدخلات Permission61=قراءة التدخلات
@ -600,10 +600,10 @@ Permission86=إرسال أوامر العملاء
Permission87=وثيقة أوامر العملاء Permission87=وثيقة أوامر العملاء
Permission88=إلغاء أوامر العملاء Permission88=إلغاء أوامر العملاء
Permission89=حذف أوامر العملاء Permission89=حذف أوامر العملاء
Permission91=قراءة المساهمات الاجتماعية وضريبة القيمة المضافة Permission91=Read social or fiscal taxes and vat
Permission92=إنشاء / تعديل المساهمات الاجتماعية وضريبة القيمة المضافة Permission92=Create/modify social or fiscal taxes and vat
Permission93=حذف المساهمات الاجتماعية وضريبة القيمة المضافة Permission93=Delete social or fiscal taxes and vat
Permission94=تصدير المساهمات الاجتماعية Permission94=Export social or fiscal taxes
Permission95=قراءة تقارير Permission95=قراءة تقارير
Permission101=قراءة الإرسال Permission101=قراءة الإرسال
Permission102=إنشاء / تعديل الإرسال Permission102=إنشاء / تعديل الإرسال
@ -621,9 +621,9 @@ Permission121=قراءة الغير مرتبطة المستخدم
Permission122=إنشاء / تغيير الغير مرتبطة المستخدم Permission122=إنشاء / تغيير الغير مرتبطة المستخدم
Permission125=حذف الغير مرتبطة المستخدم Permission125=حذف الغير مرتبطة المستخدم
Permission126=الصادرات الغير Permission126=الصادرات الغير
Permission141=المهام اقرأ Permission141=Read all projects and tasks (also private projects i am not contact for)
Permission142=إنشاء / تعديل المهام Permission142=Create/modify all projects and tasks (also private projects i am not contact for)
Permission144=حذف المهام Permission144=Delete all projects and tasks (also private projects i am not contact for)
Permission146=قراءة موفري Permission146=قراءة موفري
Permission147=قراءة احصائيات Permission147=قراءة احصائيات
Permission151=قراءة أوامر دائمة Permission151=قراءة أوامر دائمة
@ -801,7 +801,7 @@ DictionaryCountry=Countries
DictionaryCurrency=Currencies DictionaryCurrency=Currencies
DictionaryCivility=Civility title DictionaryCivility=Civility title
DictionaryActions=Type of agenda events DictionaryActions=Type of agenda events
DictionarySocialContributions=Social contributions types DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps DictionaryRevenueStamp=Amount of revenue stamps
DictionaryPaymentConditions=Payment terms DictionaryPaymentConditions=Payment terms
@ -820,6 +820,7 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units DictionaryUnits=Units
DictionaryProspectStatus=Prospection status DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves
SetupSaved=الإعداد المحفوظة SetupSaved=الإعداد المحفوظة
BackToModuleList=العودة إلى قائمة الوحدات BackToModuleList=العودة إلى قائمة الوحدات
BackToDictionaryList=Back to dictionaries list BackToDictionaryList=Back to dictionaries list
@ -1510,7 +1511,7 @@ ConfirmDeleteMenu=هل أنت متأكد من أنك تريد حذف القائ
DeleteLine=حذف السطر DeleteLine=حذف السطر
ConfirmDeleteLine=هل أنت متأكد من أنك تريد حذف هذا الخط؟ ConfirmDeleteLine=هل أنت متأكد من أنك تريد حذف هذا الخط؟
##### Tax ##### ##### Tax #####
TaxSetup=الضرائب والمساهمات الاجتماعية والأرباح وحدة الإعداد TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=ضريبة القيمة المضافة المستحقة OptionVatMode=ضريبة القيمة المضافة المستحقة
OptionVATDefault=Cash basis OptionVATDefault=Cash basis
OptionVATDebitOption=Accrual basis OptionVATDebitOption=Accrual basis
@ -1564,9 +1565,11 @@ EndPointIs=الصابون العملاء يجب إرسال الطلبات إلى
ApiSetup=API module setup ApiSetup=API module setup
ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services. ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services.
KeyForApiAccess=Key to use API (parameter "api_key") KeyForApiAccess=Key to use API (parameter "api_key")
ApiProductionMode=Enable production mode
ApiEndPointIs=You can access to the API at url ApiEndPointIs=You can access to the API at url
ApiExporerIs=You can explore the API at url ApiExporerIs=You can explore the API at url
OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed
ApiKey=Key for API
##### Bank ##### ##### Bank #####
BankSetupModule=إعداد وحدة مصرفية BankSetupModule=إعداد وحدة مصرفية
FreeLegalTextOnChequeReceipts=نص حر على الشيكات والإيصالات FreeLegalTextOnChequeReceipts=نص حر على الشيكات والإيصالات
@ -1596,6 +1599,7 @@ ProjectsSetup=مشروع إعداد وحدة
ProjectsModelModule=المشروع نموذج التقرير وثيقة ProjectsModelModule=المشروع نموذج التقرير وثيقة
TasksNumberingModules=Tasks numbering module TasksNumberingModules=Tasks numbering module
TaskModelModule=Tasks reports document model TaskModelModule=Tasks reports document model
UseSearchToSelectProject=Use autocompletion fields to choose project (instead of using a list box)
##### ECM (GED) ##### ##### ECM (GED) #####
ECMSetup = GED Setup ECMSetup = GED Setup
ECMAutoTree = Automatic tree folder and document 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 HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective 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 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 من الطلب OrderApprovedInDolibarr=تم الموافقة على %s من الطلب
OrderRefusedInDolibarr=Order %s refused OrderRefusedInDolibarr=Order %s refused
OrderBackToDraftInDolibarr=الطلب %s للذهاب بها إلى حالة المسودة OrderBackToDraftInDolibarr=الطلب %s للذهاب بها إلى حالة المسودة
OrderCanceledInDolibarr=تم إلغاء %s من الطلب
ProposalSentByEMail=تم إرسال العرض الرسمي %s بواسطة البريد الإلكتروني ProposalSentByEMail=تم إرسال العرض الرسمي %s بواسطة البريد الإلكتروني
OrderSentByEMail=تم إرسال طلبية العميل %s بواسطة البريد الإلكتروني OrderSentByEMail=تم إرسال طلبية العميل %s بواسطة البريد الإلكتروني
InvoiceSentByEMail=تم إرسال فاتروة العميل %s بواسطة البريد الإلكتروني InvoiceSentByEMail=تم إرسال فاتروة العميل %s بواسطة البريد الإلكتروني
@ -96,3 +95,5 @@ AddEvent=Create event
MyAvailability=My availability MyAvailability=My availability
ActionType=Event type ActionType=Event type
DateActionBegin=Start event date 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 CustomerInvoicePaymentBack=Customer payment back
SupplierInvoicePayment=المورد الدفع SupplierInvoicePayment=المورد الدفع
WithdrawalPayment=انسحاب الدفع WithdrawalPayment=انسحاب الدفع
SocialContributionPayment=دفع المساهمة الاجتماعية SocialContributionPayment=Social/fiscal tax payment
FinancialAccountJournal=مجلة الحساب المالي FinancialAccountJournal=مجلة الحساب المالي
BankTransfer=حوالة مصرفية BankTransfer=حوالة مصرفية
BankTransfers=التحويلات المصرفية BankTransfers=التحويلات المصرفية

View File

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

View File

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

View File

@ -56,23 +56,23 @@ VATCollected=جمعت ضريبة القيمة المضافة
ToPay=دفع ToPay=دفع
ToGet=العودة ToGet=العودة
SpecialExpensesArea=Area for all special payments SpecialExpensesArea=Area for all special payments
TaxAndDividendsArea=ضريبة أرباح الأسهم والمساهمات الاجتماعية ، ومنطقة TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area
SocialContribution=المساهمة الاجتماعية SocialContribution=Social or fiscal tax
SocialContributions=المساهمات الاجتماعية SocialContributions=Social or fiscal taxes
MenuSpecialExpenses=Special expenses MenuSpecialExpenses=Special expenses
MenuTaxAndDividends=الضرائب وعوائد MenuTaxAndDividends=الضرائب وعوائد
MenuSalaries=Salaries MenuSalaries=Salaries
MenuSocialContributions=المساهمات الاجتماعية MenuSocialContributions=Social/fiscal taxes
MenuNewSocialContribution=مساهمة جديدة MenuNewSocialContribution=New tax payment
NewSocialContribution=المساهمة الاجتماعية الجديدة NewSocialContribution=New social/fiscal tax
ContributionsToPay=دفع الاشتراكات ContributionsToPay=Social/fiscal taxes to pay
AccountancyTreasuryArea=المحاسبة / الخزانة المنطقة AccountancyTreasuryArea=المحاسبة / الخزانة المنطقة
AccountancySetup=المحاسبة الإعداد AccountancySetup=المحاسبة الإعداد
NewPayment=دفع جديدة NewPayment=دفع جديدة
Payments=المدفوعات Payments=المدفوعات
PaymentCustomerInvoice=الزبون تسديد الفاتورة PaymentCustomerInvoice=الزبون تسديد الفاتورة
PaymentSupplierInvoice=دفع فاتورة المورد PaymentSupplierInvoice=دفع فاتورة المورد
PaymentSocialContribution=دفع المساهمة الاجتماعية PaymentSocialContribution=Social/fiscal tax payment
PaymentVat=دفع ضريبة القيمة المضافة PaymentVat=دفع ضريبة القيمة المضافة
PaymentSalary=Salary payment PaymentSalary=Salary payment
ListPayment=قائمة المدفوعات ListPayment=قائمة المدفوعات
@ -91,7 +91,7 @@ LT1PaymentES=RE Payment
LT1PaymentsES=RE Payments LT1PaymentsES=RE Payments
VATPayment=دفع ضريبة القيمة المضافة VATPayment=دفع ضريبة القيمة المضافة
VATPayments=دفع ضريبة القيمة المضافة VATPayments=دفع ضريبة القيمة المضافة
SocialContributionsPayments=المساهمات الاجتماعية المدفوعات SocialContributionsPayments=Social/fiscal taxes payments
ShowVatPayment=وتظهر دفع ضريبة القيمة المضافة ShowVatPayment=وتظهر دفع ضريبة القيمة المضافة
TotalToPay=على دفع ما مجموعه TotalToPay=على دفع ما مجموعه
TotalVATReceived=تلقى مجموع الضريبة على القيمة المضافة TotalVATReceived=تلقى مجموع الضريبة على القيمة المضافة
@ -116,11 +116,11 @@ NewCheckDepositOn=تهيئة لتلقي الودائع على حساب : ٪ ق
NoWaitingChecks=لم ينتظر إيداع الشيكات. NoWaitingChecks=لم ينتظر إيداع الشيكات.
DateChequeReceived=استقبال المدخلات تاريخ الشيك DateChequeReceived=استقبال المدخلات تاريخ الشيك
NbOfCheques=ملاحظة : للشيكات NbOfCheques=ملاحظة : للشيكات
PaySocialContribution=دفع المساهمات الاجتماعية PaySocialContribution=Pay a social/fiscal tax
ConfirmPaySocialContribution=هل أنت متأكد من أن يصنف هذه المساهمة paid الاجتماعية؟ ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid?
DeleteSocialContribution=حذف المساهمات الاجتماعية DeleteSocialContribution=Delete a social or fiscal tax payment
ConfirmDeleteSocialContribution=هل أنت متأكد من أنك تريد حذف هذه المساهمة الاجتماعية؟ ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment?
ExportDataset_tax_1=المساهمات الاجتماعية والمدفوعات ExportDataset_tax_1=Social and fiscal taxes and payments
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>. CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>. CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</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). 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 CalculationMode=Calculation mode
AccountancyJournal=Accountancy code journal 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_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT
ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties
ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties
CloneTax=Clone a social contribution CloneTax=Clone a social/fiscal tax
ConfirmCloneTax=Confirm the clone of a social contribution ConfirmCloneTax=Confirm the clone of a social/fiscal tax payment
CloneTaxForNextMonth=Clone it for next month 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> 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. CronCommandHelp=The system command line to execute.
CronCreateJob=Create new Scheduled Job CronCreateJob=Create new Scheduled Job
CronFrom=From
# Info # Info
CronInfoPage=Information CronInfoPage=Information
# Common # Common

View File

@ -35,7 +35,7 @@ ECMSearchByEntity=بحث عن وجوه
ECMSectionOfDocuments=أدلة وثائق ECMSectionOfDocuments=أدلة وثائق
ECMTypeManual=دليل ECMTypeManual=دليل
ECMTypeAuto=التلقائي ECMTypeAuto=التلقائي
ECMDocsBySocialContributions=Documents linked to social contributions ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
ECMDocsByThirdParties=وثائق مرتبطة أطراف ثالثة ECMDocsByThirdParties=وثائق مرتبطة أطراف ثالثة
ECMDocsByProposals=وثائق مرتبطة مقترحات ECMDocsByProposals=وثائق مرتبطة مقترحات
ECMDocsByOrders=وثائق مرتبطة أوامر العملاء 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. 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. WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s.
WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters 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 Holidays=Leaves
CPTitreMenu=Leaves CPTitreMenu=Leaves
MenuReportMonth=Monthly statement MenuReportMonth=Monthly statement
MenuAddCP=Make a leave request MenuAddCP=New leave request
NotActiveModCP=You must enable the module Leaves to view this page. 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>. 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. NoCPforUser=You don't have any available day.
@ -71,7 +71,7 @@ MotifCP=سبب
UserCP=مستخدم UserCP=مستخدم
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed. 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 LogCP=Log of updates of available vacation days
ActionByCP=Performed by ActionByCP=Performed by
UserUpdateCP=For the user UserUpdateCP=For the user
@ -93,6 +93,7 @@ ValueOptionCP=القيمة
GroupToValidateCP=Group with the ability to approve leave requests GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last automatic update of leaves allocation LastUpdateCP=Last automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation
UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
ErrorUpdateConfCP=An error occurred during the update, please try again. 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>. 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. NoCPforMonth=No leave this month.
nbJours=Number days nbJours=Number days
TitleAdminCP=Configuration of Leaves TitleAdminCP=Configuration of Leaves
NoticePeriod=Notice period
#Messages #Messages
Hello=Hello Hello=Hello
HolidaysToValidate=Validate leave requests 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 : HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled leaved request HolidaysCanceled=Canceled leaved request
HolidaysCanceledBody=Your leave request for %s to %s has been canceled. HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
Permission20000=Read you own leave requests Permission20001=Read you own leave requests
Permission20001=Create/modify your leave requests Permission20002=Create/modify your leave requests
Permission20002=Create/modify leave requests for everybody
Permission20003=Delete leave requests Permission20003=Delete leave requests
Permission20004=Setup users available vacation days Permission20004=Read leave requests for everybody
Permission20005=Review log of modified leave requests Permission20005=Create/modify leave requests for everybody
Permission20006=Read leaves monthly report 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 TagUnsubscribe=Unsubscribe link
TagSignature=Signature sending user TagSignature=Signature sending user
TagMailtoEmail=Recipient EMail TagMailtoEmail=Recipient EMail
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
# Module Notifications # Module Notifications
Notifications=الإخطارات Notifications=الإخطارات
NoNotificationsWillBeSent=إشعارات البريد الإلكتروني لا يجري التخطيط لهذا الحدث ، وشركة NoNotificationsWillBeSent=إشعارات البريد الإلكتروني لا يجري التخطيط لهذا الحدث ، وشركة

View File

@ -57,7 +57,7 @@ ErrorSomeErrorWereFoundRollbackIsDone=تم العثور على بعض الأخط
ErrorConfigParameterNotDefined=المعلم <b>ل ٪</b> غير محدد Dolibarr داخل ملف <b>conf.php.</b> ErrorConfigParameterNotDefined=المعلم <b>ل ٪</b> غير محدد Dolibarr داخل ملف <b>conf.php.</b>
ErrorCantLoadUserFromDolibarrDatabase=فشلت في العثور على المستخدم <b>٪ ق</b> Dolibarr في قاعدة البيانات. ErrorCantLoadUserFromDolibarrDatabase=فشلت في العثور على المستخدم <b>٪ ق</b> Dolibarr في قاعدة البيانات.
ErrorNoVATRateDefinedForSellerCountry=خطأ ، لم يعرف لمعدلات ضريبة القيمة المضافة فى البلاد ٪ ق. ErrorNoVATRateDefinedForSellerCountry=خطأ ، لم يعرف لمعدلات ضريبة القيمة المضافة فى البلاد ٪ ق.
ErrorNoSocialContributionForSellerCountry=خطأ ، لا يوجد نوع المساهمة الاجتماعية المحددة للبلد '%s'. ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'.
ErrorFailedToSaveFile=خطأ ، وفشلت في انقاذ الملف. ErrorFailedToSaveFile=خطأ ، وفشلت في انقاذ الملف.
SetDate=Set date SetDate=Set date
SelectDate=Select a date SelectDate=Select a date
@ -302,7 +302,7 @@ UnitPriceTTC=سعر الوحدة
PriceU=ارتفاع PriceU=ارتفاع
PriceUHT=ارتفاع (صافي) PriceUHT=ارتفاع (صافي)
AskPriceSupplierUHT=U.P. net Requested AskPriceSupplierUHT=U.P. net Requested
PriceUTTC=ارتفاع PriceUTTC=U.P. (inc. tax)
Amount=مبلغ Amount=مبلغ
AmountInvoice=مبلغ الفاتورة AmountInvoice=مبلغ الفاتورة
AmountPayment=دفع مبلغ AmountPayment=دفع مبلغ
@ -339,6 +339,7 @@ IncludedVAT=وتشمل الضريبة على القيمة المضافة
HT=بعد خصم الضرائب HT=بعد خصم الضرائب
TTC=شركة ضريبة على القيمة المضافة TTC=شركة ضريبة على القيمة المضافة
VAT=ضريبة القيمة المضافة VAT=ضريبة القيمة المضافة
VATs=Sales taxes
LT1ES=تعاود LT1ES=تعاود
LT2ES=IRPF LT2ES=IRPF
VATRate=سعر الضريبة على القيمة المضافة 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> 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 ByProperties=By characteristics
MembersStatisticsByProperties=Members statistics 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 VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription 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 CorrectlyUpdated=Correctly updated
PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is
PropalMergePdfProductChooseFile=Select PDF files 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). OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
TasksPublicDesc=هذا الرأي يعرض جميع المشاريع والمهام ويسمح لك قراءة. TasksPublicDesc=هذا الرأي يعرض جميع المشاريع والمهام ويسمح لك قراءة.
TasksDesc=هذا الرأي يعرض جميع المشاريع والمهام (أذونات المستخدم الخاص أعطى الصلاحية لعرض كل شيء). 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=مشاريع المنطقة ProjectsArea=مشاريع المنطقة
NewProject=مشروع جديد NewProject=مشروع جديد
AddProject=إنشاء مشروع AddProject=إنشاء مشروع
@ -76,6 +77,7 @@ ListExpenseReportsAssociatedProject=List of expense reports associated with the
ListDonationsAssociatedProject=List of donations associated with the project ListDonationsAssociatedProject=List of donations associated with the project
ListActionsAssociatedProject=قائمة الإجراءات المرتبطة بالمشروع ListActionsAssociatedProject=قائمة الإجراءات المرتبطة بالمشروع
ListTaskTimeUserProject=List of time consumed on tasks of project ListTaskTimeUserProject=List of time consumed on tasks of project
TaskTimeUserProject=Time consumed on tasks of project
ActivityOnProjectThisWeek=نشاط المشروع هذا الاسبوع ActivityOnProjectThisWeek=نشاط المشروع هذا الاسبوع
ActivityOnProjectThisMonth=نشاط المشروع هذا الشهر ActivityOnProjectThisMonth=نشاط المشروع هذا الشهر
ActivityOnProjectThisYear=نشاط المشروع هذا العام ActivityOnProjectThisYear=نشاط المشروع هذا العام
@ -149,3 +151,6 @@ ProjectsWithThisUserAsContact=Projects with this user as contact
TasksWithThisUserAsContact=Tasks assigned to this user TasksWithThisUserAsContact=Tasks assigned to this user
ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToProject=Not assigned to project
ResourceNotAssignedToTask=Not assigned to task 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 SendToValid=Sent on approval
ModifyInfoGen=Edit ModifyInfoGen=Edit
ValidateAndSubmit=Validate and submit for approval ValidateAndSubmit=Validate and submit for approval
ValidatedWaitingApproval=Validated (waiting for approval)
NOT_VALIDATOR=You are not allowed to approve this expense report NOT_VALIDATOR=You are not allowed to approve this expense report
NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. 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" SetToStatusSent=Set to status "File Sent"
ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
StatisticsByLineStatus=Statistics by status of lines 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 ### Notifications
InfoCreditSubject=دفع %s النظام الدائمة من قبل البنك InfoCreditSubject=دفع %s النظام الدائمة من قبل البنك

View File

@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - admin # Dolibarr language file - Source file is en_US - admin
WorkflowSetup=سير العمل وحدة الإعداد 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. 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_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_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 descWORKFLOW_CONTRACT_AUTOCREATE_INVOICEAutomatically create a customer invoice after a contract is validated

View File

@ -429,8 +429,8 @@ Module20Name=Предложения
Module20Desc=Търговско предложение управление Module20Desc=Търговско предложение управление
Module22Name=Масови имейли Module22Name=Масови имейли
Module22Desc=Управление на масови имейли Module22Desc=Управление на масови имейли
Module23Name= Енергия Module23Name=Енергия
Module23Desc= Наблюдение на консумацията на енергия Module23Desc=Наблюдение на консумацията на енергия
Module25Name=Поръчки от клиенти Module25Name=Поръчки от клиенти
Module25Desc=Управление на поръчка на клиента Module25Desc=Управление на поръчка на клиента
Module30Name=Фактури Module30Name=Фактури
@ -492,7 +492,7 @@ Module400Desc=Management of projects, opportunities or leads. You can then assig
Module410Name=Webcalendar Module410Name=Webcalendar
Module410Desc=Webcalendar интеграция Module410Desc=Webcalendar интеграция
Module500Name=Special expenses 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 Module510Name=Salaries
Module510Desc=Management of employees salaries and payments Module510Desc=Management of employees salaries and payments
Module520Name=Loan 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) Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
Module700Name=Дарения Module700Name=Дарения
Module700Desc=Управление на дарения Module700Desc=Управление на дарения
Module770Name=Expense Report Module770Name=Expense reports
Module770Desc=Management and claim expense reports (transportation, meal, ...) Module770Desc=Management and claim expense reports (transportation, meal, ...)
Module1120Name=Supplier commercial proposal Module1120Name=Supplier commercial proposal
Module1120Desc=Request supplier commercial proposal and prices Module1120Desc=Request supplier commercial proposal and prices
@ -579,7 +579,7 @@ Permission32=Създаване / промяна на продукти
Permission34=Изтриване на продукти Permission34=Изтриване на продукти
Permission36=Преглед / управление на скрити продукти Permission36=Преглед / управление на скрити продукти
Permission38=Износ на продукти 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=Създаване / промяна на проекти (общи проекти и проекти съм се с нас за) Permission42=Създаване / промяна на проекти (общи проекти и проекти съм се с нас за)
Permission44=Изтриване на проекти (общи проекти и проекти съм се с нас за) Permission44=Изтриване на проекти (общи проекти и проекти съм се с нас за)
Permission61=Прочети интервенции Permission61=Прочети интервенции
@ -600,10 +600,10 @@ Permission86=Изпрати клиенти поръчки
Permission87=Затваряне на поръчките на клиентите Permission87=Затваряне на поръчките на клиентите
Permission88=Отказ клиенти поръчки Permission88=Отказ клиенти поръчки
Permission89=Изтриване на клиенти поръчки Permission89=Изтриване на клиенти поръчки
Permission91=Социалноосигурителните вноски и ДДС Permission91=Read social or fiscal taxes and vat
Permission92=Създаване / промяна на социалните вноски и ДДС Permission92=Create/modify social or fiscal taxes and vat
Permission93=Изтриване на социалноосигурителните вноски и ДДС Permission93=Delete social or fiscal taxes and vat
Permission94=Експортиране на социалноосигурителните вноски Permission94=Export social or fiscal taxes
Permission95=Прочети доклада Permission95=Прочети доклада
Permission101=Прочети sendings Permission101=Прочети sendings
Permission102=Създаване / промяна sendings Permission102=Създаване / промяна sendings
@ -621,9 +621,9 @@ Permission121=Четене на трети лица, свързани с пот
Permission122=Създаване / промяна трети страни, свързани с потребителя Permission122=Създаване / промяна трети страни, свързани с потребителя
Permission125=Изтриване на трети лица, свързани с потребителя Permission125=Изтриване на трети лица, свързани с потребителя
Permission126=Трети страни за износ Permission126=Трети страни за износ
Permission141=Прочетете проекти (лично аз не съм се с нас за) Permission141=Read all projects and tasks (also private projects i am not contact for)
Permission142=Създаване / промяна проекти (лично аз не съм се свържете) Permission142=Create/modify all projects and tasks (also private projects i am not contact for)
Permission144=Изтриване на проекти (лично аз не съм се с нас за) Permission144=Delete all projects and tasks (also private projects i am not contact for)
Permission146=Прочети доставчици Permission146=Прочети доставчици
Permission147=Прочети статистиката Permission147=Прочети статистиката
Permission151=Нареждания за периодични преводи Permission151=Нареждания за периодични преводи
@ -801,7 +801,7 @@ DictionaryCountry=Countries
DictionaryCurrency=Currencies DictionaryCurrency=Currencies
DictionaryCivility=Civility title DictionaryCivility=Civility title
DictionaryActions=Type of agenda events DictionaryActions=Type of agenda events
DictionarySocialContributions=Social contributions types DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps DictionaryRevenueStamp=Amount of revenue stamps
DictionaryPaymentConditions=Payment terms DictionaryPaymentConditions=Payment terms
@ -820,6 +820,7 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units DictionaryUnits=Units
DictionaryProspectStatus=Prospection status DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves
SetupSaved=Setup спаси SetupSaved=Setup спаси
BackToModuleList=Обратно към списъка с модули BackToModuleList=Обратно към списъка с модули
BackToDictionaryList=Back to dictionaries list BackToDictionaryList=Back to dictionaries list
@ -1510,7 +1511,7 @@ ConfirmDeleteMenu=Сигурен ли сте, че искате да изтри
DeleteLine=Изтриване на ред DeleteLine=Изтриване на ред
ConfirmDeleteLine=Сигурни ли сте, че желаете да изтриете този ред? ConfirmDeleteLine=Сигурни ли сте, че желаете да изтриете този ред?
##### Tax ##### ##### Tax #####
TaxSetup=Данъци, социални осигуровки и дивиденти модул за настройка TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=Дължимия ДДС OptionVatMode=Дължимия ДДС
OptionVATDefault=Cash basis OptionVATDefault=Cash basis
OptionVATDebitOption=Accrual basis OptionVATDebitOption=Accrual basis
@ -1564,9 +1565,11 @@ EndPointIs=SOAP клиентите трябва да изпратят своит
ApiSetup=API module setup ApiSetup=API module setup
ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services. ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services.
KeyForApiAccess=Key to use API (parameter "api_key") KeyForApiAccess=Key to use API (parameter "api_key")
ApiProductionMode=Enable production mode
ApiEndPointIs=You can access to the API at url ApiEndPointIs=You can access to the API at url
ApiExporerIs=You can explore the API at url ApiExporerIs=You can explore the API at url
OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed
ApiKey=Key for API
##### Bank ##### ##### Bank #####
BankSetupModule=Модул за настройка на банката BankSetupModule=Модул за настройка на банката
FreeLegalTextOnChequeReceipts=Свободен текст чековите разписки FreeLegalTextOnChequeReceipts=Свободен текст чековите разписки
@ -1596,6 +1599,7 @@ ProjectsSetup=Инсталационния проект модул
ProjectsModelModule=Проект доклади документ модел ProjectsModelModule=Проект доклади документ модел
TasksNumberingModules=Tasks numbering module TasksNumberingModules=Tasks numbering module
TaskModelModule=Tasks reports document model TaskModelModule=Tasks reports document model
UseSearchToSelectProject=Use autocompletion fields to choose project (instead of using a list box)
##### ECM (GED) ##### ##### ECM (GED) #####
ECMSetup = GED Setup ECMSetup = GED Setup
ECMAutoTree = Automatic tree folder and document 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 HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective 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 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 одобрен OrderApprovedInDolibarr=Поръчка %s одобрен
OrderRefusedInDolibarr=Order %s refused OrderRefusedInDolibarr=Order %s refused
OrderBackToDraftInDolibarr=Поръчка %s се върне в състояние на чернова OrderBackToDraftInDolibarr=Поръчка %s се върне в състояние на чернова
OrderCanceledInDolibarr=Поръчка %s отменен
ProposalSentByEMail=Търговски %s предложението, изпратено по електронна поща ProposalSentByEMail=Търговски %s предложението, изпратено по електронна поща
OrderSentByEMail=, Изпратени по електронната поща %s поръчка на клиента OrderSentByEMail=, Изпратени по електронната поща %s поръчка на клиента
InvoiceSentByEMail=, Изпратени по електронната поща %s клиенти фактура InvoiceSentByEMail=, Изпратени по електронната поща %s клиенти фактура
@ -96,3 +95,5 @@ AddEvent=Create event
MyAvailability=My availability MyAvailability=My availability
ActionType=Event type ActionType=Event type
DateActionBegin=Start event date 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 CustomerInvoicePaymentBack=Customer payment back
SupplierInvoicePayment=Доставчик плащане SupplierInvoicePayment=Доставчик плащане
WithdrawalPayment=Оттегляне плащане WithdrawalPayment=Оттегляне плащане
SocialContributionPayment=Осигурителната вноска за плащане SocialContributionPayment=Social/fiscal tax payment
FinancialAccountJournal=Финансова сметка списание FinancialAccountJournal=Финансова сметка списание
BankTransfer=Банков превод BankTransfer=Банков превод
BankTransfers=Банкови преводи BankTransfers=Банкови преводи

View File

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

View File

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

View File

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

View File

@ -35,7 +35,7 @@ ECMSearchByEntity=Търсене по обект
ECMSectionOfDocuments=Директории на документи ECMSectionOfDocuments=Директории на документи
ECMTypeManual=Ръчно ECMTypeManual=Ръчно
ECMTypeAuto=Автоматично ECMTypeAuto=Автоматично
ECMDocsBySocialContributions=Документи, които се отнасят до социални вноски ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
ECMDocsByThirdParties=Документи, свързани с трети страни ECMDocsByThirdParties=Документи, свързани с трети страни
ECMDocsByProposals=Документи, свързани с предложения ECMDocsByProposals=Документи, свързани с предложения
ECMDocsByOrders=Документи, свързани с поръчки на клиенти 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. WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers.
WarningPaymentDateLowerThanInvoiceDate=Датата на плащане (%s) е по-ранна от датата на фактуриране (%s) за фактура %s. WarningPaymentDateLowerThanInvoiceDate=Датата на плащане (%s) е по-ранна от датата на фактуриране (%s) за фактура %s.
WarningTooManyDataPleaseUseMoreFilters=Твърде много данни. Моля, използвайте повече филтри 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 Holidays=Leaves
CPTitreMenu=Leaves CPTitreMenu=Leaves
MenuReportMonth=Месечно извлечение MenuReportMonth=Месечно извлечение
MenuAddCP=Make a leave request MenuAddCP=New leave request
NotActiveModCP=You must enable the module Leaves to view this page. 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>. 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. NoCPforUser=You don't have any available day.
@ -71,7 +71,7 @@ MotifCP=Причина
UserCP=Потребител UserCP=Потребител
ErrorAddEventToUserCP=Възникна грешка при добавяне на изключително отпуск. ErrorAddEventToUserCP=Възникна грешка при добавяне на изключително отпуск.
AddEventToUserOkCP=Добавянето на извънредния отпуск е завършена. AddEventToUserOkCP=Добавянето на извънредния отпуск е завършена.
MenuLogCP=View logs of leave requests MenuLogCP=View change logs
LogCP=Log of updates of available vacation days LogCP=Log of updates of available vacation days
ActionByCP=В изпълнение на ActionByCP=В изпълнение на
UserUpdateCP=За потребителя UserUpdateCP=За потребителя
@ -93,6 +93,7 @@ ValueOptionCP=Стойност
GroupToValidateCP=Group with the ability to approve leave requests GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Потвърждаване на конфигурацията ConfirmConfigCP=Потвърждаване на конфигурацията
LastUpdateCP=Last automatic update of leaves allocation LastUpdateCP=Last automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation
UpdateConfCPOK=Актуализира се успешно. UpdateConfCPOK=Актуализира се успешно.
ErrorUpdateConfCP=Възникна грешка по време на актуализацията, моля опитайте отново. 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>. 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=Не оставяйте този месец. NoCPforMonth=Не оставяйте този месец.
nbJours=Брой дни nbJours=Брой дни
TitleAdminCP=Configuration of Leaves TitleAdminCP=Configuration of Leaves
NoticePeriod=Notice period
#Messages #Messages
Hello=Hello Hello=Hello
HolidaysToValidate=Validate leave requests 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 : HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled leaved request HolidaysCanceled=Canceled leaved request
HolidaysCanceledBody=Your leave request for %s to %s has been canceled. HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
Permission20000=Read you own leave requests Permission20001=Read you own leave requests
Permission20001=Create/modify your leave requests Permission20002=Create/modify your leave requests
Permission20002=Create/modify leave requests for everybody
Permission20003=Delete leave requests Permission20003=Delete leave requests
Permission20004=Setup users available vacation days Permission20004=Read leave requests for everybody
Permission20005=Review log of modified leave requests Permission20005=Create/modify leave requests for everybody
Permission20006=Read leaves monthly report 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=Отписване връзка TagUnsubscribe=Отписване връзка
TagSignature=Подпис изпращане на потребителя TagSignature=Подпис изпращане на потребителя
TagMailtoEmail=E-mail на получателя TagMailtoEmail=E-mail на получателя
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
# Module Notifications # Module Notifications
Notifications=Известия Notifications=Известия
NoNotificationsWillBeSent=Не са планирани за това събитие и компания известия по имейл NoNotificationsWillBeSent=Не са планирани за това събитие и компания известия по имейл

View File

@ -57,7 +57,7 @@ ErrorSomeErrorWereFoundRollbackIsDone=Някои бяха открити гре
ErrorConfigParameterNotDefined=Параметъра <b>%s</b> не е дефиниран в конфигурационния файл на Dolibarr <b>conf.php</b>. ErrorConfigParameterNotDefined=Параметъра <b>%s</b> не е дефиниран в конфигурационния файл на Dolibarr <b>conf.php</b>.
ErrorCantLoadUserFromDolibarrDatabase=Не можа да се намери потребител <b>%s</b> в базата данни на Dolibarr. ErrorCantLoadUserFromDolibarrDatabase=Не можа да се намери потребител <b>%s</b> в базата данни на Dolibarr.
ErrorNoVATRateDefinedForSellerCountry=Грешка, няма дефинирани ДДС ставки, за държавата '%s'. ErrorNoVATRateDefinedForSellerCountry=Грешка, няма дефинирани ДДС ставки, за държавата '%s'.
ErrorNoSocialContributionForSellerCountry=Грешка, не е социален тип участие, определено за &quot;%s&quot; страна. ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'.
ErrorFailedToSaveFile=Грешка, файла не е записан. ErrorFailedToSaveFile=Грешка, файла не е записан.
SetDate=Set date SetDate=Set date
SelectDate=Select a date SelectDate=Select a date
@ -302,7 +302,7 @@ UnitPriceTTC=Единична цена
PriceU=U.P. PriceU=U.P.
PriceUHT=U.P. (нето) PriceUHT=U.P. (нето)
AskPriceSupplierUHT=U.P. net Requested AskPriceSupplierUHT=U.P. net Requested
PriceUTTC=U.P. PriceUTTC=U.P. (inc. tax)
Amount=Размер Amount=Размер
AmountInvoice=Фактурирана стойност AmountInvoice=Фактурирана стойност
AmountPayment=Сума за плащане AmountPayment=Сума за плащане
@ -339,6 +339,7 @@ IncludedVAT=С включен данък
HT=без данък HT=без данък
TTC=с данък TTC=с данък
VAT=Данък върху продажбите VAT=Данък върху продажбите
VATs=Sales taxes
LT1ES=RE LT1ES=RE
LT2ES=IRPF LT2ES=IRPF
VATRate=Данъчната ставка 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> 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 ByProperties=By characteristics
MembersStatisticsByProperties=Members statistics 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 VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription 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 CorrectlyUpdated=Correctly updated
PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is
PropalMergePdfProductChooseFile=Select PDF files 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). OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
TasksPublicDesc=Този възглед представя всички проекти и задачи, които може да чете. TasksPublicDesc=Този възглед представя всички проекти и задачи, които може да чете.
TasksDesc=Този възглед представя всички проекти и задачи (потребителски разрешения ви даде разрешение да видите всичко). 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=Проекти област ProjectsArea=Проекти област
NewProject=Нов проект NewProject=Нов проект
AddProject=Create project AddProject=Create project
@ -76,6 +77,7 @@ ListExpenseReportsAssociatedProject=List of expense reports associated with the
ListDonationsAssociatedProject=List of donations associated with the project ListDonationsAssociatedProject=List of donations associated with the project
ListActionsAssociatedProject=Списък на събития, свързани с проекта ListActionsAssociatedProject=Списък на събития, свързани с проекта
ListTaskTimeUserProject=List of time consumed on tasks of project ListTaskTimeUserProject=List of time consumed on tasks of project
TaskTimeUserProject=Time consumed on tasks of project
ActivityOnProjectThisWeek=Дейности в проекта тази седмица ActivityOnProjectThisWeek=Дейности в проекта тази седмица
ActivityOnProjectThisMonth=Дейност по проект, този месец ActivityOnProjectThisMonth=Дейност по проект, този месец
ActivityOnProjectThisYear=Дейности в проекта тази година ActivityOnProjectThisYear=Дейности в проекта тази година
@ -149,3 +151,6 @@ ProjectsWithThisUserAsContact=Projects with this user as contact
TasksWithThisUserAsContact=Tasks assigned to this user TasksWithThisUserAsContact=Tasks assigned to this user
ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToProject=Not assigned to project
ResourceNotAssignedToTask=Not assigned to task 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 SendToValid=Sent on approval
ModifyInfoGen=Edit ModifyInfoGen=Edit
ValidateAndSubmit=Validate and submit for approval ValidateAndSubmit=Validate and submit for approval
ValidatedWaitingApproval=Validated (waiting for approval)
NOT_VALIDATOR=You are not allowed to approve this expense report NOT_VALIDATOR=You are not allowed to approve this expense report
NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. 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" SetToStatusSent=Set to status "File Sent"
ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
StatisticsByLineStatus=Statistics by status of lines 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 ### Notifications
InfoCreditSubject=Плащане на постоянно нареждане %s от банката InfoCreditSubject=Плащане на постоянно нареждане %s от банката

View File

@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - admin # Dolibarr language file - Source file is en_US - admin
WorkflowSetup=Настройки на модул Workflow 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. 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_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_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 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 Module20Desc=Commercial proposal management
Module22Name=Mass E-mailings Module22Name=Mass E-mailings
Module22Desc=Mass E-mailing management Module22Desc=Mass E-mailing management
Module23Name= Energy Module23Name=Energy
Module23Desc= Monitoring the consumption of energies Module23Desc=Monitoring the consumption of energies
Module25Name=Customer Orders Module25Name=Customer Orders
Module25Desc=Customer order management Module25Desc=Customer order management
Module30Name=Invoices Module30Name=Invoices
@ -492,7 +492,7 @@ Module400Desc=Management of projects, opportunities or leads. You can then assig
Module410Name=Webcalendar Module410Name=Webcalendar
Module410Desc=Webcalendar integration Module410Desc=Webcalendar integration
Module500Name=Special expenses 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 Module510Name=Salaries
Module510Desc=Management of employees salaries and payments Module510Desc=Management of employees salaries and payments
Module520Name=Loan 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) Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
Module700Name=Donations Module700Name=Donations
Module700Desc=Donation management Module700Desc=Donation management
Module770Name=Expense Report Module770Name=Expense reports
Module770Desc=Management and claim expense reports (transportation, meal, ...) Module770Desc=Management and claim expense reports (transportation, meal, ...)
Module1120Name=Supplier commercial proposal Module1120Name=Supplier commercial proposal
Module1120Desc=Request supplier commercial proposal and prices Module1120Desc=Request supplier commercial proposal and prices
@ -579,7 +579,7 @@ Permission32=Create/modify products
Permission34=Delete products Permission34=Delete products
Permission36=See/manage hidden products Permission36=See/manage hidden products
Permission38=Export 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) Permission42=Create/modify projects (shared project and projects i'm contact for)
Permission44=Delete projects (shared project and projects i'm contact for) Permission44=Delete projects (shared project and projects i'm contact for)
Permission61=Read interventions Permission61=Read interventions
@ -600,10 +600,10 @@ Permission86=Send customers orders
Permission87=Close customers orders Permission87=Close customers orders
Permission88=Cancel customers orders Permission88=Cancel customers orders
Permission89=Delete customers orders Permission89=Delete customers orders
Permission91=Read social contributions and vat Permission91=Read social or fiscal taxes and vat
Permission92=Create/modify social contributions and vat Permission92=Create/modify social or fiscal taxes and vat
Permission93=Delete social contributions and vat Permission93=Delete social or fiscal taxes and vat
Permission94=Export social contributions Permission94=Export social or fiscal taxes
Permission95=Read reports Permission95=Read reports
Permission101=Read sendings Permission101=Read sendings
Permission102=Create/modify sendings Permission102=Create/modify sendings
@ -621,9 +621,9 @@ Permission121=Read third parties linked to user
Permission122=Create/modify third parties linked to user Permission122=Create/modify third parties linked to user
Permission125=Delete third parties linked to user Permission125=Delete third parties linked to user
Permission126=Export third parties Permission126=Export third parties
Permission141=Read 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 projects (also private i am not contact for) Permission142=Create/modify all projects and tasks (also private projects i am not contact for)
Permission144=Delete projects (also private i am not contact for) Permission144=Delete all projects and tasks (also private projects i am not contact for)
Permission146=Read providers Permission146=Read providers
Permission147=Read stats Permission147=Read stats
Permission151=Read standing orders Permission151=Read standing orders
@ -801,7 +801,7 @@ DictionaryCountry=Countries
DictionaryCurrency=Currencies DictionaryCurrency=Currencies
DictionaryCivility=Civility title DictionaryCivility=Civility title
DictionaryActions=Type of agenda events DictionaryActions=Type of agenda events
DictionarySocialContributions=Social contributions types DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps DictionaryRevenueStamp=Amount of revenue stamps
DictionaryPaymentConditions=Payment terms DictionaryPaymentConditions=Payment terms
@ -820,6 +820,7 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units DictionaryUnits=Units
DictionaryProspectStatus=Prospection status DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves
SetupSaved=Setup saved SetupSaved=Setup saved
BackToModuleList=Back to modules list BackToModuleList=Back to modules list
BackToDictionaryList=Back to dictionaries 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 DeleteLine=Delete line
ConfirmDeleteLine=Are you sure you want to delete this line ? ConfirmDeleteLine=Are you sure you want to delete this line ?
##### Tax ##### ##### Tax #####
TaxSetup=Taxes, social contributions and dividends module setup TaxSetup=Taxes, social or fiscal taxes and dividends module setup
OptionVatMode=VAT due OptionVatMode=VAT due
OptionVATDefault=Cash basis OptionVATDefault=Cash basis
OptionVATDebitOption=Accrual basis OptionVATDebitOption=Accrual basis
@ -1564,9 +1565,11 @@ EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint availa
ApiSetup=API module setup ApiSetup=API module setup
ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services. ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services.
KeyForApiAccess=Key to use API (parameter "api_key") KeyForApiAccess=Key to use API (parameter "api_key")
ApiProductionMode=Enable production mode
ApiEndPointIs=You can access to the API at url ApiEndPointIs=You can access to the API at url
ApiExporerIs=You can explore the API at url ApiExporerIs=You can explore the API at url
OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed
ApiKey=Key for API
##### Bank ##### ##### Bank #####
BankSetupModule=Bank module setup BankSetupModule=Bank module setup
FreeLegalTextOnChequeReceipts=Free text on cheque receipts FreeLegalTextOnChequeReceipts=Free text on cheque receipts
@ -1596,6 +1599,7 @@ ProjectsSetup=Project module setup
ProjectsModelModule=Project reports document model ProjectsModelModule=Project reports document model
TasksNumberingModules=Tasks numbering module TasksNumberingModules=Tasks numbering module
TaskModelModule=Tasks reports document model TaskModelModule=Tasks reports document model
UseSearchToSelectProject=Use autocompletion fields to choose project (instead of using a list box)
##### ECM (GED) ##### ##### ECM (GED) #####
ECMSetup = GED Setup ECMSetup = GED Setup
ECMAutoTree = Automatic tree folder and document 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 HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective 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 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 InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS
InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status
InvoiceDeleteDolibarr=Invoice %s deleted 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 OrderApprovedInDolibarr=Order %s approved
OrderRefusedInDolibarr=Order %s refused OrderRefusedInDolibarr=Order %s refused
OrderBackToDraftInDolibarr=Order %s go back to draft status OrderBackToDraftInDolibarr=Order %s go back to draft status
OrderCanceledInDolibarr=Order %s canceled
ProposalSentByEMail=Commercial proposal %s sent by EMail ProposalSentByEMail=Commercial proposal %s sent by EMail
OrderSentByEMail=Customer order %s sent by EMail OrderSentByEMail=Customer order %s sent by EMail
InvoiceSentByEMail=Customer invoice %s sent by EMail InvoiceSentByEMail=Customer invoice %s sent by EMail
@ -91,3 +93,7 @@ WorkingTimeRange=Working time range
WorkingDaysRange=Working days range WorkingDaysRange=Working days range
AddEvent=Create event AddEvent=Create event
MyAvailability=My availability 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 CustomerInvoicePaymentBack=Customer payment back
SupplierInvoicePayment=Supplier payment SupplierInvoicePayment=Supplier payment
WithdrawalPayment=Withdrawal payment WithdrawalPayment=Withdrawal payment
SocialContributionPayment=Social contribution payment SocialContributionPayment=Social/fiscal tax payment
FinancialAccountJournal=Financial account journal FinancialAccountJournal=Financial account journal
BankTransfer=Bank transfer BankTransfer=Bank transfer
BankTransfers=Bank transfers BankTransfers=Bank transfers

View File

@ -178,7 +178,7 @@ NumberOfBills=Nb of invoices
NumberOfBillsByMonth=Nb of invoices by month NumberOfBillsByMonth=Nb of invoices by month
AmountOfBills=Amount of invoices AmountOfBills=Amount of invoices
AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) AmountOfBillsByMonthHT=Amount of invoices by month (net of tax)
ShowSocialContribution=Show social contribution ShowSocialContribution=Show social/fiscal tax
ShowBill=Show invoice ShowBill=Show invoice
ShowInvoice=Show invoice ShowInvoice=Show invoice
ShowInvoiceReplace=Show replacing 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. 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. 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) 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 PaymentId=Payment id
InvoiceId=Invoice id InvoiceId=Invoice id
InvoiceRef=Invoice ref. InvoiceRef=Invoice ref.

View File

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

View File

@ -56,23 +56,23 @@ VATCollected=VAT collected
ToPay=To pay ToPay=To pay
ToGet=To get back ToGet=To get back
SpecialExpensesArea=Area for all special payments SpecialExpensesArea=Area for all special payments
TaxAndDividendsArea=Tax, social contributions and dividends area TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area
SocialContribution=Social contribution SocialContribution=Social or fiscal tax
SocialContributions=Social contributions SocialContributions=Social or fiscal taxes
MenuSpecialExpenses=Special expenses MenuSpecialExpenses=Special expenses
MenuTaxAndDividends=Taxes and dividends MenuTaxAndDividends=Taxes and dividends
MenuSalaries=Salaries MenuSalaries=Salaries
MenuSocialContributions=Social contributions MenuSocialContributions=Social/fiscal taxes
MenuNewSocialContribution=New contribution MenuNewSocialContribution=New tax payment
NewSocialContribution=New social contribution NewSocialContribution=New social/fiscal tax
ContributionsToPay=Contributions to pay ContributionsToPay=Social/fiscal taxes to pay
AccountancyTreasuryArea=Accountancy/Treasury area AccountancyTreasuryArea=Accountancy/Treasury area
AccountancySetup=Accountancy setup AccountancySetup=Accountancy setup
NewPayment=New payment NewPayment=New payment
Payments=Payments Payments=Payments
PaymentCustomerInvoice=Customer invoice payment PaymentCustomerInvoice=Customer invoice payment
PaymentSupplierInvoice=Supplier invoice payment PaymentSupplierInvoice=Supplier invoice payment
PaymentSocialContribution=Social contribution payment PaymentSocialContribution=Social/fiscal tax payment
PaymentVat=VAT payment PaymentVat=VAT payment
PaymentSalary=Salary payment PaymentSalary=Salary payment
ListPayment=List of payments ListPayment=List of payments
@ -91,7 +91,7 @@ LT1PaymentES=RE Payment
LT1PaymentsES=RE Payments LT1PaymentsES=RE Payments
VATPayment=VAT Payment VATPayment=VAT Payment
VATPayments=VAT Payments VATPayments=VAT Payments
SocialContributionsPayments=Social contributions payments SocialContributionsPayments=Social/fiscal taxes payments
ShowVatPayment=Show VAT payment ShowVatPayment=Show VAT payment
TotalToPay=Total to pay TotalToPay=Total to pay
TotalVATReceived=Total VAT received TotalVATReceived=Total VAT received
@ -116,11 +116,11 @@ NewCheckDepositOn=Create receipt for deposit on account: %s
NoWaitingChecks=No checks waiting for deposit. NoWaitingChecks=No checks waiting for deposit.
DateChequeReceived=Check reception date DateChequeReceived=Check reception date
NbOfCheques=Nb of checks NbOfCheques=Nb of checks
PaySocialContribution=Pay a social contribution PaySocialContribution=Pay a social/fiscal tax
ConfirmPaySocialContribution=Are you sure you want to classify this social contribution as paid? ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid?
DeleteSocialContribution=Delete a social contribution DeleteSocialContribution=Delete a social or fiscal tax payment
ConfirmDeleteSocialContribution=Are you sure you want to delete this social contribution? ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment?
ExportDataset_tax_1=Social contributions and payments ExportDataset_tax_1=Social and fiscal taxes and payments
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>. CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>. CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</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). 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 CalculationMode=Calculation mode
AccountancyJournal=Accountancy code journal 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_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT
ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties
ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties
CloneTax=Clone a social contribution CloneTax=Clone a social/fiscal tax
ConfirmCloneTax=Confirm the clone of a social contribution ConfirmCloneTax=Confirm the clone of a social/fiscal tax payment
CloneTaxForNextMonth=Clone it for next month 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> 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. CronCommandHelp=The system command line to execute.
CronCreateJob=Create new Scheduled Job CronCreateJob=Create new Scheduled Job
CronFrom=From
# Info # Info
CronInfoPage=Information CronInfoPage=Information
# Common # Common

View File

@ -35,7 +35,7 @@ ECMSearchByEntity=Search by object
ECMSectionOfDocuments=Directories of documents ECMSectionOfDocuments=Directories of documents
ECMTypeManual=Manual ECMTypeManual=Manual
ECMTypeAuto=Automatic ECMTypeAuto=Automatic
ECMDocsBySocialContributions=Documents linked to social contributions ECMDocsBySocialContributions=Documents linked to social or fiscal taxes
ECMDocsByThirdParties=Documents linked to third parties ECMDocsByThirdParties=Documents linked to third parties
ECMDocsByProposals=Documents linked to proposals ECMDocsByProposals=Documents linked to proposals
ECMDocsByOrders=Documents linked to customers orders 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. 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. WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s.
WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters 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 Holidays=Leaves
CPTitreMenu=Leaves CPTitreMenu=Leaves
MenuReportMonth=Monthly statement MenuReportMonth=Monthly statement
MenuAddCP=Make a leave request MenuAddCP=New leave request
NotActiveModCP=You must enable the module Leaves to view this page. 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>. 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. NoCPforUser=You don't have any available day.
@ -71,7 +71,7 @@ MotifCP=Reason
UserCP=User UserCP=User
ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. ErrorAddEventToUserCP=An error occurred while adding the exceptional leave.
AddEventToUserOkCP=The addition of the exceptional leave has been completed. 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 LogCP=Log of updates of available vacation days
ActionByCP=Performed by ActionByCP=Performed by
UserUpdateCP=For the user UserUpdateCP=For the user
@ -93,6 +93,7 @@ ValueOptionCP=Value
GroupToValidateCP=Group with the ability to approve leave requests GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last automatic update of leaves allocation LastUpdateCP=Last automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation
UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
ErrorUpdateConfCP=An error occurred during the update, please try again. 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>. 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. NoCPforMonth=No leave this month.
nbJours=Number days nbJours=Number days
TitleAdminCP=Configuration of Leaves TitleAdminCP=Configuration of Leaves
NoticePeriod=Notice period
#Messages #Messages
Hello=Hello Hello=Hello
HolidaysToValidate=Validate leave requests 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 : HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled leaved request HolidaysCanceled=Canceled leaved request
HolidaysCanceledBody=Your leave request for %s to %s has been canceled. HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
Permission20000=Read you own leave requests Permission20001=Read you own leave requests
Permission20001=Create/modify your leave requests Permission20002=Create/modify your leave requests
Permission20002=Create/modify leave requests for everybody
Permission20003=Delete leave requests Permission20003=Delete leave requests
Permission20004=Setup users available vacation days Permission20004=Read leave requests for everybody
Permission20005=Review log of modified leave requests Permission20005=Create/modify leave requests for everybody
Permission20006=Read leaves monthly report 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 TagUnsubscribe=Unsubscribe link
TagSignature=Signature sending user TagSignature=Signature sending user
TagMailtoEmail=Recipient EMail TagMailtoEmail=Recipient EMail
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
# Module Notifications # Module Notifications
Notifications=Notifications Notifications=Notifications
NoNotificationsWillBeSent=No email notifications are planned for this event and company 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>. 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. ErrorCantLoadUserFromDolibarrDatabase=Failed to find user <b>%s</b> in Dolibarr database.
ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. 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. ErrorFailedToSaveFile=Error, failed to save file.
SetDate=Set date SetDate=Set date
SelectDate=Select a date SelectDate=Select a date
@ -302,7 +302,7 @@ UnitPriceTTC=Unit price
PriceU=U.P. PriceU=U.P.
PriceUHT=U.P. (net) PriceUHT=U.P. (net)
AskPriceSupplierUHT=U.P. net Requested AskPriceSupplierUHT=U.P. net Requested
PriceUTTC=U.P. PriceUTTC=U.P. (inc. tax)
Amount=Amount Amount=Amount
AmountInvoice=Invoice amount AmountInvoice=Invoice amount
AmountPayment=Payment amount AmountPayment=Payment amount
@ -339,6 +339,7 @@ IncludedVAT=Included tax
HT=Net of tax HT=Net of tax
TTC=Inc. tax TTC=Inc. tax
VAT=Sales tax VAT=Sales tax
VATs=Sales taxes
LT1ES=RE LT1ES=RE
LT2ES=IRPF LT2ES=IRPF
VATRate=Tax Rate 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> 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 ByProperties=By characteristics
MembersStatisticsByProperties=Members statistics 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 VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription 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