Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
0fe0c989ca
@ -28,10 +28,10 @@ Restler 3.0 LGPL-3+ Yes
|
|||||||
TCPDF 6.2.6 LGPL-3+ Yes PDF generation
|
TCPDF 6.2.6 LGPL-3+ Yes PDF generation
|
||||||
|
|
||||||
JS libraries:
|
JS libraries:
|
||||||
jQuery 1.8.2 MIT License Yes JS library
|
jQuery 1.11.3 MIT License Yes JS library
|
||||||
jQuery UI 1.9.1 GPL and MIT License Yes JS library plugin UI
|
jQuery UI 1.11.4 GPL and MIT License Yes JS library plugin UI
|
||||||
jQuery select2 3.5.2 GPL and Apache License Yes JS library plugin for sexier multiselect
|
jQuery select2 3.5.2 GPL and Apache License Yes JS library plugin for sexier multiselect
|
||||||
jQuery blockUI 2.43 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
||||||
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
|
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
|
||||||
jQuery DataTables 1.9.4 BSD Yes JS library for tables output
|
jQuery DataTables 1.9.4 BSD Yes JS library for tables output
|
||||||
jQuery FileUpload 5.0.3 GPL and MIT License Yes JS library to upload files
|
jQuery FileUpload 5.0.3 GPL and MIT License Yes JS library to upload files
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.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) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
* Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||||
* Copyright (C) 2014 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2014 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
*
|
*
|
||||||
* 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
|
||||||
@ -56,6 +56,8 @@ $list = array (
|
|||||||
'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',
|
'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',
|
||||||
'ACCOUNTING_SERVICE_BUY_ACCOUNT',
|
'ACCOUNTING_SERVICE_BUY_ACCOUNT',
|
||||||
'ACCOUNTING_SERVICE_SOLD_ACCOUNT',
|
'ACCOUNTING_SERVICE_SOLD_ACCOUNT',
|
||||||
|
'ACCOUNTING_VAT_BUY_ACCOUNT',
|
||||||
|
'ACCOUNTING_VAT_SOLD_ACCOUNT',
|
||||||
'ACCOUNTING_ACCOUNT_SUSPENSE',
|
'ACCOUNTING_ACCOUNT_SUSPENSE',
|
||||||
'ACCOUNTING_ACCOUNT_TRANSFER_CASH'
|
'ACCOUNTING_ACCOUNT_TRANSFER_CASH'
|
||||||
);
|
);
|
||||||
|
|||||||
@ -112,7 +112,7 @@ if ($result) {
|
|||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
// les variables
|
// les variables
|
||||||
$cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER)) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : $langs->trans("CodeNotDef");
|
$cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER)) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : $langs->trans("CodeNotDef");
|
||||||
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_ACCOUNT : $langs->trans("CodeNotDef");
|
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT : $langs->trans("CodeNotDef");
|
||||||
|
|
||||||
$tabfac = array ();
|
$tabfac = array ();
|
||||||
$tabht = array ();
|
$tabht = array ();
|
||||||
|
|||||||
@ -136,7 +136,7 @@ if ($result) {
|
|||||||
else
|
else
|
||||||
$compta_prod = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef");
|
$compta_prod = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT : $langs->trans("CodeNotDef");
|
||||||
}
|
}
|
||||||
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_ACCOUNT : $langs->trans("CodeNotDef");
|
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT : $langs->trans("CodeNotDef");
|
||||||
$compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva);
|
$compta_tva = (! empty($obj->account_tva) ? $obj->account_tva : $cpttva);
|
||||||
|
|
||||||
// Situation invoices handling
|
// Situation invoices handling
|
||||||
|
|||||||
@ -44,7 +44,7 @@ $list = array(
|
|||||||
'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',
|
'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',
|
||||||
'ACCOUNTING_SERVICE_BUY_ACCOUNT',
|
'ACCOUNTING_SERVICE_BUY_ACCOUNT',
|
||||||
'ACCOUNTING_SERVICE_SOLD_ACCOUNT',
|
'ACCOUNTING_SERVICE_SOLD_ACCOUNT',
|
||||||
'ACCOUNTING_VAT_ACCOUNT',
|
'ACCOUNTING_VAT_SOLD_ACCOUNT',
|
||||||
'ACCOUNTING_VAT_BUY_ACCOUNT',
|
'ACCOUNTING_VAT_BUY_ACCOUNT',
|
||||||
'ACCOUNTING_ACCOUNT_CUSTOMER',
|
'ACCOUNTING_ACCOUNT_CUSTOMER',
|
||||||
'ACCOUNTING_ACCOUNT_SUPPLIER'
|
'ACCOUNTING_ACCOUNT_SUPPLIER'
|
||||||
|
|||||||
@ -146,6 +146,10 @@ if ($action == 'setModuleOptions')
|
|||||||
else if ($action == 'set')
|
else if ($action == 'set')
|
||||||
{
|
{
|
||||||
$ret = addDocumentModel($value, $type, $label, $scandir);
|
$ret = addDocumentModel($value, $type, $label, $scandir);
|
||||||
|
if ($ret > 0 && empty($conf->global->EXPENSEREPORT_ADDON_PDF))
|
||||||
|
{
|
||||||
|
dolibarr_set_const($db, 'EXPENSEREPORT_ADDON_PDF', $value,'chaine',0,'',$conf->entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ($action == 'del')
|
else if ($action == 'del')
|
||||||
|
|||||||
@ -410,17 +410,19 @@ if ($id > 0)
|
|||||||
print '</td><td colspan="3">';
|
print '</td><td colspan="3">';
|
||||||
$limit_field_type = (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) ? 'numeric' : 'amount';
|
$limit_field_type = (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) ? 'numeric' : 'amount';
|
||||||
print $form->editfieldval("OutstandingBill",'outstanding_limit',$object->outstanding_limit,$object,$user->rights->societe->creer,$limit_field_type,($object->outstanding_limit != '' ? price($object->outstanding_limit) : ''));
|
print $form->editfieldval("OutstandingBill",'outstanding_limit',$object->outstanding_limit,$object,$user->rights->societe->creer,$limit_field_type,($object->outstanding_limit != '' ? price($object->outstanding_limit) : ''));
|
||||||
|
if (empty($object->outstanding_limit)) print $langs->trans("NoLimit");
|
||||||
// display amount and link to unpaid bill
|
// display amount and link to unpaid bill
|
||||||
$outstandingBills = $object->get_OutstandingBill();
|
$outstandingBills = $object->get_OutstandingBill();
|
||||||
if ($outstandingBills != 0)
|
print ' (' . $langs->trans('CurrentOutstandingBill') . ': ';
|
||||||
|
print price($outstandingBills, '', $langs, 0, 0, - 1, $conf->currency);
|
||||||
|
if ($object->outstanding_limit != '')
|
||||||
{
|
{
|
||||||
print ' ('.$langs->trans("CurrentOutstandingBill");
|
if ($outstandingBills > $object->outstanding_limit)
|
||||||
print ' <a href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->id.'&search_status=1">';
|
print img_warning($langs->trans("OutstandingBillReached"));
|
||||||
print price($outstandingBills, '', $langs, 0, -1, -1, $conf->currency);
|
//print ' / ' . price($soc->outstanding_limit);
|
||||||
print '</a>';
|
|
||||||
if ($outstandingBills > $object->outstanding_limit) print img_warning($langs->trans("OutstandingBillReached"));
|
|
||||||
print ')';
|
|
||||||
}
|
}
|
||||||
|
print ')';
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2003 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-2011 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
*
|
*
|
||||||
@ -98,7 +98,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
|
|||||||
|
|
||||||
|
|
||||||
// Statistics
|
// Statistics
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder nohover" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td colspan="4">'.$langs->trans("Statistics").'</td>';
|
print '<td colspan="4">'.$langs->trans("Statistics").'</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
@ -111,7 +111,7 @@ foreach ($listoftype as $code => $label)
|
|||||||
|
|
||||||
if ($conf->use_javascript_ajax)
|
if ($conf->use_javascript_ajax)
|
||||||
{
|
{
|
||||||
print '<tr><td align="center" colspan="4">';
|
print '<tr '.$bc[false].'><td align="center" colspan="4">';
|
||||||
$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>';
|
||||||
|
|||||||
@ -2502,7 +2502,9 @@ 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
|
||||||
*/
|
*/
|
||||||
@ -2522,7 +2524,8 @@ if ($action == 'create')
|
|||||||
$result = $object->fetch_thirdparty();
|
$result = $object->fetch_thirdparty();
|
||||||
|
|
||||||
$soc = new Societe($db);
|
$soc = new Societe($db);
|
||||||
$soc->fetch($object->socid);
|
$result=$soc->fetch($object->socid);
|
||||||
|
if ($result < 0) dol_print_error($db);
|
||||||
$selleruserevenustamp = $mysoc->useRevenueStamp();
|
$selleruserevenustamp = $mysoc->useRevenueStamp();
|
||||||
|
|
||||||
$totalpaye = $object->getSommePaiement();
|
$totalpaye = $object->getSommePaiement();
|
||||||
@ -2857,7 +2860,8 @@ if ($action == 'create')
|
|||||||
$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"));
|
||||||
print ' / ' . price($soc->outstanding_limit);
|
print ' / ' . price($soc->outstanding_limit);
|
||||||
@ -2946,7 +2950,8 @@ if ($action == 'create')
|
|||||||
} 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) {
|
||||||
if ($object->statut == 0 && $object->type != Facture::TYPE_DEPOSIT) {
|
if ($object->statut == 0 && $object->type != Facture::TYPE_DEPOSIT) {
|
||||||
|
|||||||
@ -151,7 +151,7 @@ if ($result)
|
|||||||
if($obj->product_type == 0) $compta_prod = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT)?$conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT:$langs->trans("CodeNotDef"));
|
if($obj->product_type == 0) $compta_prod = (! empty($conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT)?$conf->global->ACCOUNTING_PRODUCT_SOLD_ACCOUNT:$langs->trans("CodeNotDef"));
|
||||||
else $compta_prod = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT)?$conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT:$langs->trans("CodeNotDef"));
|
else $compta_prod = (! empty($conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT)?$conf->global->ACCOUNTING_SERVICE_SOLD_ACCOUNT:$langs->trans("CodeNotDef"));
|
||||||
}
|
}
|
||||||
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_ACCOUNT)?$conf->global->ACCOUNTING_VAT_ACCOUNT:$langs->trans("CodeNotDef"));
|
$cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)?$conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT:$langs->trans("CodeNotDef"));
|
||||||
$compta_tva = (! empty($obj->account_tva)?$obj->account_tva:$cpttva);
|
$compta_tva = (! empty($obj->account_tva)?$obj->account_tva:$cpttva);
|
||||||
|
|
||||||
$account_localtax1=getLocalTaxesFromRate($obj->tva_tx, 1, $obj->thirdparty, $mysoc);
|
$account_localtax1=getLocalTaxesFromRate($obj->tva_tx, 1, $obj->thirdparty, $mysoc);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013 Antoine Iauch <aiauch@gpcsolutions.fr>
|
/* Copyright (C) 2013 Antoine Iauch <aiauch@gpcsolutions.fr>
|
||||||
* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
*
|
*
|
||||||
@ -18,8 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/compta/stats/cabyprodserv.php
|
* \file htdocs/compta/stats/cabyprodserv.php
|
||||||
* \brief Page reporting TO by Products & Services
|
* \brief Page reporting TO by Products & Services
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -47,13 +47,13 @@ if (GETPOST("modecompta")) $modecompta=GETPOST("modecompta");
|
|||||||
$sortorder=isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"];
|
$sortorder=isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"];
|
||||||
$sortfield=isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"];
|
$sortfield=isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"];
|
||||||
if (! $sortorder) $sortorder="asc";
|
if (! $sortorder) $sortorder="asc";
|
||||||
if (! $sortfield) $sortfield="name";
|
if (! $sortfield) $sortfield="ref";
|
||||||
|
|
||||||
// Category
|
// Category
|
||||||
$selected_cat = (int) GETPOST('search_categ', 'int');
|
$selected_cat = (int) GETPOST('search_categ', 'int');
|
||||||
$subcat = false;
|
$subcat = false;
|
||||||
if (GETPOST('subcat', 'alpha') === 'yes') {
|
if (GETPOST('subcat', 'alpha') === 'yes') {
|
||||||
$subcat = true;
|
$subcat = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Date range
|
// Date range
|
||||||
@ -132,7 +132,7 @@ $headerparams = array_merge($commonparams, $headerparams);
|
|||||||
$tableparams = array_merge($commonparams, $tableparams);
|
$tableparams = array_merge($commonparams, $tableparams);
|
||||||
|
|
||||||
foreach($allparams as $key => $value) {
|
foreach($allparams as $key => $value) {
|
||||||
$paramslink .= '&' . $key . '=' . $value;
|
$paramslink .= '&' . $key . '=' . $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -148,28 +148,28 @@ $nom=$langs->trans("SalesTurnover").', '.$langs->trans("ByProductsAndServices");
|
|||||||
|
|
||||||
if ($modecompta=="CREANCES-DETTES") {
|
if ($modecompta=="CREANCES-DETTES") {
|
||||||
$calcmode=$langs->trans("CalcModeDebt");
|
$calcmode=$langs->trans("CalcModeDebt");
|
||||||
$calcmode.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&modecompta=RECETTES-DEPENSES">','</a>').')';
|
$calcmode.='<br>('.$langs->trans("SeeReportInInputOutputMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&modecompta=RECETTES-DEPENSES">','</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);
|
||||||
|
|
||||||
$description=$langs->trans("RulesCADue");
|
$description=$langs->trans("RulesCADue");
|
||||||
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 {
|
} else {
|
||||||
$description.= $langs->trans("DepositsAreIncluded");
|
$description.= $langs->trans("DepositsAreIncluded");
|
||||||
}
|
}
|
||||||
|
|
||||||
$builddate=time();
|
$builddate=time();
|
||||||
} else {
|
} else {
|
||||||
$calcmode=$langs->trans("CalcModeEngagement");
|
$calcmode=$langs->trans("CalcModeEngagement");
|
||||||
$calcmode.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&modecompta=CREANCES-DETTES">','</a>').')';
|
$calcmode.='<br>('.$langs->trans("SeeReportInDueDebtMode",'<a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'&modecompta=CREANCES-DETTES">','</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);
|
||||||
|
|
||||||
$description=$langs->trans("RulesCAIn");
|
$description=$langs->trans("RulesCAIn");
|
||||||
$description.= $langs->trans("DepositsAreIncluded");
|
$description.= $langs->trans("DepositsAreIncluded");
|
||||||
|
|
||||||
$builddate=time();
|
$builddate=time();
|
||||||
}
|
}
|
||||||
|
|
||||||
report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportlink,$tableparams,$calcmode);
|
report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportlink,$tableparams,$calcmode);
|
||||||
@ -180,221 +180,226 @@ $catotal=0;
|
|||||||
|
|
||||||
if ($modecompta == 'CREANCES-DETTES')
|
if ($modecompta == 'CREANCES-DETTES')
|
||||||
{
|
{
|
||||||
$sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label,";
|
$sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label,";
|
||||||
$sql.= " sum(l.total_ht) as amount, sum(l.total_ttc) as amount_ttc";
|
$sql.= " SUM(l.total_ht) as amount, SUM(l.total_ttc) as amount_ttc,";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."facturedet as l, ".MAIN_DB_PREFIX."product as p";
|
$sql.= " SUM(CASE WHEN f.type = 2 THEN -l.qty ELSE l.qty END) as qty";
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."facturedet as l, ".MAIN_DB_PREFIX."product as p";
|
||||||
if ($selected_cat === -2) // Without any category
|
if ($selected_cat === -2) // Without any category
|
||||||
{
|
{
|
||||||
$sql.= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product";
|
$sql.= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product";
|
||||||
}
|
}
|
||||||
else if ($selected_cat) // Into a specific category
|
else if ($selected_cat) // Into a specific category
|
||||||
{
|
{
|
||||||
$sql.= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp";
|
$sql.= ", ".MAIN_DB_PREFIX."categorie as c, ".MAIN_DB_PREFIX."categorie_product as cp";
|
||||||
}
|
}
|
||||||
$sql.= " WHERE l.fk_product = p.rowid";
|
$sql.= " WHERE l.fk_product = p.rowid";
|
||||||
$sql.= " AND l.fk_facture = f.rowid";
|
$sql.= " AND l.fk_facture = f.rowid";
|
||||||
$sql.= " AND f.fk_statut in (1,2)";
|
$sql.= " AND f.fk_statut in (1,2)";
|
||||||
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) {
|
||||||
$sql.= " AND f.type IN (0,1,2,5)";
|
$sql.= " AND f.type IN (0,1,2,5)";
|
||||||
} else {
|
} else {
|
||||||
$sql.= " AND f.type IN (0,1,2,3,5)";
|
$sql.= " AND f.type IN (0,1,2,3,5)";
|
||||||
}
|
}
|
||||||
if ($date_start && $date_end) {
|
if ($date_start && $date_end) {
|
||||||
$sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
|
$sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'";
|
||||||
}
|
}
|
||||||
if ($selected_cat === -2) // Without any category
|
if ($selected_cat === -2) // Without any category
|
||||||
{
|
{
|
||||||
$sql.=" AND cp.fk_product is null";
|
$sql.=" AND cp.fk_product is null";
|
||||||
}
|
}
|
||||||
else if ($selected_cat) { // Into a specific category
|
else if ($selected_cat) { // Into a specific category
|
||||||
$sql.= " AND (c.rowid = ".$selected_cat;
|
$sql.= " AND (c.rowid = ".$selected_cat;
|
||||||
if ($subcat) $sql.=" OR c.fk_parent = " . $selected_cat;
|
if ($subcat) $sql.=" OR c.fk_parent = " . $selected_cat;
|
||||||
$sql.= ")";
|
$sql.= ")";
|
||||||
$sql.= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid";
|
$sql.= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid";
|
||||||
}
|
}
|
||||||
$sql.= " AND f.entity = ".$conf->entity;
|
$sql.= " AND f.entity = ".$conf->entity;
|
||||||
$sql.= " GROUP BY p.rowid, p.ref, p.label";
|
$sql.= " GROUP BY p.rowid, p.ref, p.label";
|
||||||
$sql.= " ORDER BY p.ref";
|
$sql.= $db->order($sortfield,$sortorder);
|
||||||
|
|
||||||
dol_syslog("cabyprodserv", LOG_DEBUG);
|
dol_syslog("cabyprodserv", LOG_DEBUG);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
$i=0;
|
$i=0;
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
$amount_ht[$obj->rowid] = $obj->amount;
|
$amount_ht[$obj->rowid] = $obj->amount;
|
||||||
$amount[$obj->rowid] = $obj->amount_ttc;
|
$amount[$obj->rowid] = $obj->amount_ttc;
|
||||||
$name[$obj->rowid] = $obj->ref . ' - ' . $obj->label;
|
$qty[$obj->rowid] = $obj->qty;
|
||||||
$catotal_ht+=$obj->amount;
|
$name[$obj->rowid] = $obj->ref . ' - ' . $obj->label;
|
||||||
$catotal+=$obj->amount_ttc;
|
$catotal_ht+=$obj->amount;
|
||||||
$i++;
|
$catotal+=$obj->amount_ttc;
|
||||||
|
$qtytotal+=$obj->qty;
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show Array
|
// Show Array
|
||||||
$i=0;
|
$i=0;
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
// Extra parameters management
|
// Extra parameters management
|
||||||
foreach($headerparams as $key => $value)
|
foreach($headerparams as $key => $value)
|
||||||
{
|
{
|
||||||
print '<input type="hidden" name="'.$key.'" value="'.$value.'">';
|
print '<input type="hidden" name="'.$key.'" value="'.$value.'">';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
// Category filter
|
// Category filter
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $langs->trans("Category") . ': ' . $formother->select_categories(Categorie::TYPE_PRODUCT, $selected_cat, 'search_categ', true);
|
print $langs->trans("Category") . ': ' . $formother->select_categories(Categorie::TYPE_PRODUCT, $selected_cat, 'search_categ', true);
|
||||||
print ' ';
|
print ' ';
|
||||||
print $langs->trans("SubCats") . '? ';
|
print $langs->trans("SubCats") . '? ';
|
||||||
print '<input type="checkbox" name="subcat" value="yes"';
|
print '<input type="checkbox" name="subcat" value="yes"';
|
||||||
if ($subcat) {
|
if ($subcat) {
|
||||||
print ' checked';
|
print ' checked';
|
||||||
}
|
}
|
||||||
print '></td>';
|
print '></td>';
|
||||||
print '<td colspan="3" align="right">';
|
print '<td colspan="5" align="right">';
|
||||||
print '<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_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></tr>';
|
print '</td></tr>';
|
||||||
// Array header
|
|
||||||
print "<tr class=\"liste_titre\">";
|
|
||||||
print_liste_field_titre(
|
|
||||||
$langs->trans("Product"),
|
|
||||||
$_SERVER["PHP_SELF"],
|
|
||||||
"name",
|
|
||||||
"",
|
|
||||||
$paramslink,
|
|
||||||
"",
|
|
||||||
$sortfield,
|
|
||||||
$sortorder
|
|
||||||
);
|
|
||||||
print_liste_field_titre(
|
|
||||||
$langs->trans('AmountHT'),
|
|
||||||
$_SERVER["PHP_SELF"],
|
|
||||||
"amount_ht",
|
|
||||||
"",
|
|
||||||
$paramslink,
|
|
||||||
'align="right"',
|
|
||||||
$sortfield,
|
|
||||||
$sortorder
|
|
||||||
);
|
|
||||||
print_liste_field_titre(
|
|
||||||
$langs->trans("AmountTTC"),
|
|
||||||
$_SERVER["PHP_SELF"],
|
|
||||||
"amount_ttc",
|
|
||||||
"",
|
|
||||||
$paramslink,
|
|
||||||
'align="right"',
|
|
||||||
$sortfield,
|
|
||||||
$sortorder
|
|
||||||
);
|
|
||||||
print_liste_field_titre(
|
|
||||||
$langs->trans("Percentage"),
|
|
||||||
$_SERVER["PHP_SELF"],
|
|
||||||
"amount_ttc",
|
|
||||||
"",
|
|
||||||
$paramslink,
|
|
||||||
'align="right"',
|
|
||||||
$sortfield,
|
|
||||||
$sortorder
|
|
||||||
);
|
|
||||||
// TODO: statistics?
|
|
||||||
print "</tr>\n";
|
|
||||||
|
|
||||||
// Array Data
|
// Array header
|
||||||
$var=true;
|
print "<tr class=\"liste_titre\">";
|
||||||
|
print_liste_field_titre(
|
||||||
|
$langs->trans("Product"),
|
||||||
|
$_SERVER["PHP_SELF"],
|
||||||
|
"ref",
|
||||||
|
"",
|
||||||
|
$paramslink,
|
||||||
|
"",
|
||||||
|
$sortfield,
|
||||||
|
$sortorder
|
||||||
|
);
|
||||||
|
print_liste_field_titre(
|
||||||
|
$langs->trans('Quantity'),
|
||||||
|
$_SERVER["PHP_SELF"],
|
||||||
|
"qty",
|
||||||
|
"",
|
||||||
|
$paramslink,
|
||||||
|
'align="right"',
|
||||||
|
$sortfield,
|
||||||
|
$sortorder
|
||||||
|
);
|
||||||
|
print_liste_field_titre(
|
||||||
|
$langs->trans("Percentage"),
|
||||||
|
$_SERVER["PHP_SELF"],
|
||||||
|
"qty",
|
||||||
|
"",
|
||||||
|
$paramslink,
|
||||||
|
'align="right"',
|
||||||
|
$sortfield,
|
||||||
|
$sortorder
|
||||||
|
);
|
||||||
|
print_liste_field_titre(
|
||||||
|
$langs->trans('AmountHT'),
|
||||||
|
$_SERVER["PHP_SELF"],
|
||||||
|
"amount",
|
||||||
|
"",
|
||||||
|
$paramslink,
|
||||||
|
'align="right"',
|
||||||
|
$sortfield,
|
||||||
|
$sortorder
|
||||||
|
);
|
||||||
|
print_liste_field_titre(
|
||||||
|
$langs->trans("AmountTTC"),
|
||||||
|
$_SERVER["PHP_SELF"],
|
||||||
|
"amount_ttc",
|
||||||
|
"",
|
||||||
|
$paramslink,
|
||||||
|
'align="right"',
|
||||||
|
$sortfield,
|
||||||
|
$sortorder
|
||||||
|
);
|
||||||
|
print_liste_field_titre(
|
||||||
|
$langs->trans("Percentage"),
|
||||||
|
$_SERVER["PHP_SELF"],
|
||||||
|
"amount_ttc",
|
||||||
|
"",
|
||||||
|
$paramslink,
|
||||||
|
'align="right"',
|
||||||
|
$sortfield,
|
||||||
|
$sortorder
|
||||||
|
);
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
if (count($amount)) {
|
// Array Data
|
||||||
$arrayforsort=$name;
|
$var=true;
|
||||||
// defining arrayforsort
|
|
||||||
if ($sortfield == 'nom' && $sortorder == 'asc') {
|
|
||||||
asort($name);
|
|
||||||
$arrayforsort=$name;
|
|
||||||
}
|
|
||||||
if ($sortfield == 'nom' && $sortorder == 'desc') {
|
|
||||||
arsort($name);
|
|
||||||
$arrayforsort=$name;
|
|
||||||
}
|
|
||||||
if ($sortfield == 'amount_ht' && $sortorder == 'asc') {
|
|
||||||
asort($amount_ht);
|
|
||||||
$arrayforsort=$amount_ht;
|
|
||||||
}
|
|
||||||
if ($sortfield == 'amount_ht' && $sortorder == 'desc') {
|
|
||||||
arsort($amount_ht);
|
|
||||||
$arrayforsort=$amount_ht;
|
|
||||||
}
|
|
||||||
if ($sortfield == 'amount_ttc' && $sortorder == 'asc') {
|
|
||||||
asort($amount);
|
|
||||||
$arrayforsort=$amount;
|
|
||||||
}
|
|
||||||
if ($sortfield == 'amount_ttc' && $sortorder == 'desc') {
|
|
||||||
arsort($amount);
|
|
||||||
$arrayforsort=$amount;
|
|
||||||
}
|
|
||||||
foreach($arrayforsort as $key=>$value) {
|
|
||||||
$var=!$var;
|
|
||||||
print "<tr ".$bc[$var].">";
|
|
||||||
|
|
||||||
// Product
|
if (count($name)) {
|
||||||
$fullname=$name[$key];
|
foreach($name as $key=>$value) {
|
||||||
if ($key >= 0) {
|
$var=!$var;
|
||||||
$linkname='<a href="'.DOL_URL_ROOT.'/product/card.php?id='.$key.'">'.img_object($langs->trans("ShowProduct"),'product').' '.$fullname.'</a>';
|
print "<tr ".$bc[$var].">";
|
||||||
} else {
|
|
||||||
$linkname=$langs->trans("PaymentsNotLinkedToProduct");
|
|
||||||
}
|
|
||||||
|
|
||||||
print "<td>".$linkname."</td>\n";
|
// Product
|
||||||
|
$fullname=$name[$key];
|
||||||
|
if ($key >= 0) {
|
||||||
|
$linkname='<a href="'.DOL_URL_ROOT.'/product/card.php?id='.$key.'">'.img_object($langs->trans("ShowProduct"),'product').' '.$fullname.'</a>';
|
||||||
|
} else {
|
||||||
|
$linkname=$langs->trans("PaymentsNotLinkedToProduct");
|
||||||
|
}
|
||||||
|
|
||||||
// Amount w/o VAT
|
print "<td>".$linkname."</td>\n";
|
||||||
print '<td align="right">';
|
|
||||||
/*if ($key > 0) {
|
|
||||||
print '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?productid='.$key.'">';
|
|
||||||
} else {
|
|
||||||
print '<a href="#">';
|
|
||||||
}*/
|
|
||||||
print price($amount_ht[$key]);
|
|
||||||
//print '</a>';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
// Amount with VAT
|
// Quantity
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
/*if ($key > 0) {
|
print $qty[$key];
|
||||||
print '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?productid='.$key.'">';
|
print '</td>';
|
||||||
} else {
|
|
||||||
print '<a href="#">';
|
|
||||||
}*/
|
|
||||||
print price($amount[$key]);
|
|
||||||
//print '</a>';
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
// Percent;
|
// Percent;
|
||||||
print '<td align="right">'.($catotal > 0 ? round(100 * $amount[$key] / $catotal, 2).'%' : ' ').'</td>';
|
print '<td align="right">'.($qtytotal > 0 ? round(100 * $qty[$key] / $qtytotal, 2).'%' : ' ').'</td>';
|
||||||
|
|
||||||
// TODO: statistics?
|
// Amount w/o VAT
|
||||||
|
print '<td align="right">';
|
||||||
|
/*if ($key > 0) {
|
||||||
|
print '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?productid='.$key.'">';
|
||||||
|
} else {
|
||||||
|
print '<a href="#">';
|
||||||
|
}*/
|
||||||
|
print price($amount_ht[$key]);
|
||||||
|
//print '</a>';
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
print "</tr>\n";
|
// Amount with VAT
|
||||||
$i++;
|
print '<td align="right">';
|
||||||
}
|
/*if ($key > 0) {
|
||||||
|
print '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?productid='.$key.'">';
|
||||||
|
} else {
|
||||||
|
print '<a href="#">';
|
||||||
|
}*/
|
||||||
|
print price($amount[$key]);
|
||||||
|
//print '</a>';
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
// Total
|
// Percent;
|
||||||
print '<tr class="liste_total">';
|
print '<td align="right">'.($catotal > 0 ? round(100 * $amount[$key] / $catotal, 2).'%' : ' ').'</td>';
|
||||||
print '<td>'.$langs->trans("Total").'</td>';
|
|
||||||
print '<td align="right">'.price($catotal_ht).'</td>';
|
|
||||||
print '<td align="right">'.price($catotal).'</td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$db->free($result);
|
// TODO: statistics?
|
||||||
}
|
|
||||||
print "</table>";
|
print "</tr>\n";
|
||||||
print '</form>';
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Total
|
||||||
|
print '<tr class="liste_total">';
|
||||||
|
print '<td>'.$langs->trans("Total").'</td>';
|
||||||
|
print '<td align="right">'.price($catotal_ht).'</td>';
|
||||||
|
print '<td align="right">'.price($catotal).'</td>';
|
||||||
|
print '<td> </td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
$db->free($result);
|
||||||
|
}
|
||||||
|
print "</table>";
|
||||||
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
// $modecompta != 'CREANCES-DETTES'
|
// $modecompta != 'CREANCES-DETTES'
|
||||||
// "Calculation of part of each product for accountancy in this mode is not possible. When a partial payment (for example 5 euros) is done on an
|
// "Calculation of part of each product for accountancy in this mode is not possible. When a partial payment (for example 5 euros) is done on an
|
||||||
// invoice with 2 product (product A for 10 euros and product B for 20 euros), what is part of paiment for product A and part of paiment for product B ?
|
// invoice with 2 product (product A for 10 euros and product B for 20 euros), what is part of paiment for product A and part of paiment for product B ?
|
||||||
// Because there is no way to know this, this report is not relevant.
|
// Because there is no way to know this, this report is not relevant.
|
||||||
print '<br>'.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant") . '<br>';
|
print '<br>'.$langs->trans("TurnoverPerProductInCommitmentAccountingNotRelevant") . '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
|
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
|
||||||
@ -1149,6 +1149,14 @@ else
|
|||||||
else print $langs->trans("NoDolibarrAccess");
|
else print $langs->trans("NoDolibarrAccess");
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td>';
|
||||||
|
print $langs->trans("ExportCardToFormat").'</td><td colspan="3">';
|
||||||
|
print '<a href="'.DOL_URL_ROOT.'/contact/vcard.php?id='.$contact->id.'">';
|
||||||
|
print img_picto($langs->trans("VCard"),'vcard.png').' ';
|
||||||
|
print $langs->trans("VCard");
|
||||||
|
print '</a>';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
print dol_fiche_end();
|
print dol_fiche_end();
|
||||||
|
|||||||
@ -1,112 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2006-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
* Copyright (C) 2006-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* 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/contact/exportimport.php
|
|
||||||
* \ingroup societe
|
|
||||||
* \brief Onglet exports-imports d'un contact
|
|
||||||
*/
|
|
||||||
|
|
||||||
require '../main.inc.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/contact.lib.php';
|
|
||||||
|
|
||||||
$langs->load("companies");
|
|
||||||
|
|
||||||
// Security check
|
|
||||||
$id = GETPOST('id', 'int');
|
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
|
||||||
$result = restrictedArea($user, 'contact', $id, 'socpeople&societe');
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* View
|
|
||||||
*/
|
|
||||||
|
|
||||||
$title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
|
|
||||||
|
|
||||||
llxHeader('',$title,'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas');
|
|
||||||
|
|
||||||
$form = new Form($db);
|
|
||||||
|
|
||||||
$contact = new Contact($db);
|
|
||||||
$contact->fetch($id, $user);
|
|
||||||
|
|
||||||
|
|
||||||
$head = contact_prepare_head($contact);
|
|
||||||
|
|
||||||
dol_fiche_head($head, 'exportimport', $title, 0, 'contact');
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Fiche en mode visu
|
|
||||||
*/
|
|
||||||
print '<table class="border" width="100%">';
|
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/contact/list.php">'.$langs->trans("BackToList").'</a>';
|
|
||||||
|
|
||||||
// Ref
|
|
||||||
print '<tr><td>'.$langs->trans("Ref").'</td><td colspan="3">';
|
|
||||||
print $form->showrefnav($contact, 'id', $linkback);
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// Name
|
|
||||||
print '<tr><td width="20%">'.$langs->trans("Lastname").' / '.$langs->trans("Label").'</td><td>'.$contact->lastname.'</td>';
|
|
||||||
print '<td width="20%">'.$langs->trans("Firstname").'</td><td width="25%">'.$contact->firstname.'</td></tr>';
|
|
||||||
|
|
||||||
// Company
|
|
||||||
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
|
|
||||||
{
|
|
||||||
if ($contact->socid > 0)
|
|
||||||
{
|
|
||||||
$objsoc = new Societe($db);
|
|
||||||
$objsoc->fetch($contact->socid);
|
|
||||||
|
|
||||||
print '<tr><td width="15%">'.$langs->trans("ThirdParty").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print '<tr><td width="15%">'.$langs->trans("ThirdParty").'</td><td colspan="3">';
|
|
||||||
print $langs->trans("ContactNotLinkedToCompany");
|
|
||||||
print '</td></tr>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Civility
|
|
||||||
print '<tr><td>'.$langs->trans("UserTitle").'</td><td colspan="3">';
|
|
||||||
print $contact->getCivilityLabel();
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
print $langs->trans("ExportCardToFormat").': ';
|
|
||||||
print '<a href="'.DOL_URL_ROOT.'/contact/vcard.php?id='.$contact->id.'">';
|
|
||||||
print img_picto($langs->trans("VCard"),'vcard.png').' ';
|
|
||||||
print $langs->trans("VCard");
|
|
||||||
print '</a>';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$db->close();
|
|
||||||
|
|
||||||
llxFooter();
|
|
||||||
@ -130,24 +130,25 @@ class HookManager
|
|||||||
|
|
||||||
// Define type of hook ('output' or 'addreplace'. 'returnvalue' is deprecated).
|
// Define type of hook ('output' or 'addreplace'. 'returnvalue' is deprecated).
|
||||||
$hooktype='output';
|
$hooktype='output';
|
||||||
if (in_array(
|
if (in_array(
|
||||||
$method,
|
$method,
|
||||||
array(
|
array(
|
||||||
'addMoreActionsButtons',
|
'addMoreActionsButtons',
|
||||||
'addStatisticLine',
|
'addStatisticLine',
|
||||||
'deleteFile',
|
'deleteFile',
|
||||||
'doActions',
|
'doActions',
|
||||||
'formCreateThirdpartyOptions',
|
'formCreateThirdpartyOptions',
|
||||||
'formObjectOptions',
|
'formObjectOptions',
|
||||||
'formattachOptions',
|
'formattachOptions',
|
||||||
'formBuilddocLineOptions',
|
'formBuilddocLineOptions',
|
||||||
'moveUploadedFile',
|
'moveUploadedFile',
|
||||||
'pdf_writelinedesc',
|
'pdf_writelinedesc',
|
||||||
'paymentsupplierinvoices',
|
'paymentsupplierinvoices',
|
||||||
'printSearchForm',
|
'printAddress',
|
||||||
'formatEvent'
|
'printSearchForm',
|
||||||
)
|
'formatEvent'
|
||||||
)) $hooktype='addreplace';
|
)
|
||||||
|
)) $hooktype='addreplace';
|
||||||
// Deprecated hook types ('returnvalue')
|
// Deprecated hook types ('returnvalue')
|
||||||
if (preg_match('/^pdf_/',$method) && $method != 'pdf_writelinedesc') $hooktype='returnvalue'; // pdf_xxx except pdf_writelinedesc are 'returnvalue' hooks. When there is 2 hooks of this type, only last one win. TODO Move them into 'output' or 'addreplace' hooks.
|
if (preg_match('/^pdf_/',$method) && $method != 'pdf_writelinedesc') $hooktype='returnvalue'; // pdf_xxx except pdf_writelinedesc are 'returnvalue' hooks. When there is 2 hooks of this type, only last one win. TODO Move them into 'output' or 'addreplace' hooks.
|
||||||
if ($method == 'insertExtraFields')
|
if ($method == 'insertExtraFields')
|
||||||
|
|||||||
@ -504,7 +504,7 @@ function show_projects($conf,$langs,$db,$object,$backtopage='')
|
|||||||
$projecttmp = new Project($db);
|
$projecttmp = new Project($db);
|
||||||
|
|
||||||
$i=0;
|
$i=0;
|
||||||
$var=false;
|
$var=true;
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
|
|||||||
@ -57,11 +57,6 @@ function contact_prepare_head(Contact $object)
|
|||||||
$head[$tab][2] = 'perso';
|
$head[$tab][2] = 'perso';
|
||||||
$tab++;
|
$tab++;
|
||||||
|
|
||||||
$head[$tab][0] = DOL_URL_ROOT.'/contact/exportimport.php?id='.$object->id;
|
|
||||||
$head[$tab][1] = $langs->trans("ExportImport");
|
|
||||||
$head[$tab][2] = 'exportimport';
|
|
||||||
$tab++;
|
|
||||||
|
|
||||||
// Show more tabs from modules
|
// Show more tabs from modules
|
||||||
// Entries must be declared in modules descriptor with line
|
// Entries must be declared in modules descriptor with line
|
||||||
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||||
|
|||||||
@ -361,7 +361,7 @@ class pdf_standard extends ModeleExpenseReport
|
|||||||
|
|
||||||
// Total with all taxes
|
// Total with all taxes
|
||||||
$pdf->SetFont('','', $default_font_size - 1);
|
$pdf->SetFont('','', $default_font_size - 1);
|
||||||
$pdf->SetXY($this->postotalttc-2, $curY);
|
$pdf->SetXY($this->postotalttc-1, $curY);
|
||||||
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 3, price($object->lines[$i]->total_ttc), 0, 'R');
|
$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 3, price($object->lines[$i]->total_ttc), 0, 'R');
|
||||||
|
|
||||||
$nexY+=5;
|
$nexY+=5;
|
||||||
|
|||||||
@ -241,10 +241,10 @@ class modFacture extends DolibarrModules
|
|||||||
$this->export_label[$r]='CustomersInvoicesAndPayments'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
$this->export_label[$r]='CustomersInvoicesAndPayments'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
||||||
$this->export_icon[$r]='bill';
|
$this->export_icon[$r]='bill';
|
||||||
$this->export_permission[$r]=array(array("facture","facture","export"));
|
$this->export_permission[$r]=array(array("facture","facture","export"));
|
||||||
$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','p.fk_bank'=>'IdTransaction');
|
$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.fk_bank'=>'IdTransaction');
|
||||||
//$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number','p.fk_bank'=>'Number');
|
//$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number','p.fk_bank'=>'Number');
|
||||||
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number','p.fk_bank'=>'Number');
|
$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number','p.fk_bank'=>'Number');
|
||||||
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','p.fk_bank'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user');
|
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.fk_bank'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user');
|
||||||
$this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
$this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
|
||||||
// Add extra fields
|
// Add extra fields
|
||||||
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'";
|
$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'";
|
||||||
@ -295,6 +295,7 @@ class modFacture extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
|
||||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement as p ON pf.fk_paiement = p.rowid';
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement as p ON pf.fk_paiement = p.rowid';
|
||||||
|
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as pt ON pt.id = p.fk_paiement';
|
||||||
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid';
|
$this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid';
|
||||||
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')';
|
$this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('facture',1).')';
|
||||||
$r++;
|
$r++;
|
||||||
|
|||||||
@ -166,7 +166,7 @@ class modProduct extends DolibarrModules
|
|||||||
if (! empty($conf->barcode->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('p.barcode'=>'product'));
|
if (! empty($conf->barcode->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('p.barcode'=>'product'));
|
||||||
if (! empty($conf->fournisseur->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('s.nom'=>'product','pf.ref_fourn'=>'product','pf.unitprice'=>'product'));
|
if (! empty($conf->fournisseur->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('s.nom'=>'product','pf.ref_fourn'=>'product','pf.unitprice'=>'product'));
|
||||||
// Add extra fields
|
// Add extra fields
|
||||||
$sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'product'";
|
$sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'product' AND entity IN (0, ".$conf->entity.')';
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql) // This can fail when class is used on old database (during migration for example)
|
if ($resql) // This can fail when class is used on old database (during migration for example)
|
||||||
{
|
{
|
||||||
@ -251,7 +251,8 @@ class modProduct extends DolibarrModules
|
|||||||
$this->import_fields_array[$r]=array('p.ref'=>"Ref*",'p.label'=>"Label*",'p.description'=>"Description",'p.url'=>"PublicUrl",'p.accountancy_code_sell'=>"ProductAccountancySellCode",'p.accountancy_code_buy'=>"ProductAccountancyBuyCode",'p.note'=>"Note",'p.length'=>"Length",'p.surface'=>"Surface",'p.volume'=>"Volume",'p.weight'=>"Weight",'p.duration'=>"Duration",'p.customcode'=>'CustomCode','p.price'=>"SellingPriceHT",'p.price_ttc'=>"SellingPriceTTC",'p.tva_tx'=>'VAT','p.tosell'=>"OnSell*",'p.tobuy'=>"OnBuy*",'p.fk_product_type'=>"Type*",'p.finished'=>'Nature','p.datec'=>'DateCreation*');
|
$this->import_fields_array[$r]=array('p.ref'=>"Ref*",'p.label'=>"Label*",'p.description'=>"Description",'p.url'=>"PublicUrl",'p.accountancy_code_sell'=>"ProductAccountancySellCode",'p.accountancy_code_buy'=>"ProductAccountancyBuyCode",'p.note'=>"Note",'p.length'=>"Length",'p.surface'=>"Surface",'p.volume'=>"Volume",'p.weight'=>"Weight",'p.duration'=>"Duration",'p.customcode'=>'CustomCode','p.price'=>"SellingPriceHT",'p.price_ttc'=>"SellingPriceTTC",'p.tva_tx'=>'VAT','p.tosell'=>"OnSell*",'p.tobuy'=>"OnBuy*",'p.fk_product_type'=>"Type*",'p.finished'=>'Nature','p.datec'=>'DateCreation*');
|
||||||
if (! empty($conf->barcode->enabled)) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r],array('p.barcode'=>'BarCode'));
|
if (! empty($conf->barcode->enabled)) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r],array('p.barcode'=>'BarCode'));
|
||||||
// Add extra fields
|
// Add extra fields
|
||||||
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'product' AND entity = ".$conf->entity;
|
$import_extrafield_sample=array();
|
||||||
|
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'product' entity IN (0, ".$conf->entity.')';
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql) // This can fail when class is used on old database (during migration for example)
|
if ($resql) // This can fail when class is used on old database (during migration for example)
|
||||||
{
|
{
|
||||||
@ -260,13 +261,14 @@ class modProduct extends DolibarrModules
|
|||||||
$fieldname='extra.'.$obj->name;
|
$fieldname='extra.'.$obj->name;
|
||||||
$fieldlabel=ucfirst($obj->label);
|
$fieldlabel=ucfirst($obj->label);
|
||||||
$this->import_fields_array[$r][$fieldname]=$fieldlabel.($obj->fieldrequired?'*':'');
|
$this->import_fields_array[$r][$fieldname]=$fieldlabel.($obj->fieldrequired?'*':'');
|
||||||
|
$import_extrafield_sample[$fieldname]=$fieldlabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// End add extra fields
|
// End add extra fields
|
||||||
$this->import_fieldshidden_array[$r]=array('extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'product'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
|
$this->import_fieldshidden_array[$r]=array('extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'product'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
|
||||||
$this->import_regex_array[$r]=array('p.ref'=>'[^ ]','p.tosell'=>'^[0|1]$','p.tobuy'=>'^[0|1]$','p.fk_product_type'=>'^[0|1]$','p.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
|
$this->import_regex_array[$r]=array('p.ref'=>'[^ ]','p.tosell'=>'^[0|1]$','p.tobuy'=>'^[0|1]$','p.fk_product_type'=>'^[0|1]$','p.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$');
|
||||||
$this->import_examplevalues_array[$r]=array('p.ref'=>"PREF123456",'p.label'=>"My product",'p.description'=>"This is a description example for record",'p.note'=>"Some note",'p.price'=>"100",'p.price_ttc'=>"110",'p.tva_tx'=>'10','p.tosell'=>"0 or 1",'p.tobuy'=>"0 or 1",'p.fk_product_type'=>"0 for product/1 for service",'p.finished'=>'','p.duration'=>"1y",'p.datec'=>'2008-12-31');
|
$import_sample=array('p.ref'=>"PREF123456",'p.label'=>"My product",'p.description'=>"This is a description example for record",'p.note'=>"Some note",'p.price'=>"100",'p.price_ttc'=>"110",'p.tva_tx'=>'10','p.tosell'=>"0 or 1",'p.tobuy'=>"0 or 1",'p.fk_product_type'=>"0 for product/1 for service",'p.finished'=>'','p.duration'=>"1y",'p.datec'=>'2008-12-31');
|
||||||
|
$this->import_examplevalues_array[$r]=array_merge($import_sample,$import_extrafield_sample);
|
||||||
|
|
||||||
if (! empty($conf->fournisseur->enabled))
|
if (! empty($conf->fournisseur->enabled))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -527,7 +527,8 @@ jQuery(document).ready(function() {
|
|||||||
}
|
}
|
||||||
if (this.id == 'pmpprice')
|
if (this.id == 'pmpprice')
|
||||||
{
|
{
|
||||||
var defaultbuyprice = <?php echo (isset($conf->global->MARGIN_PMP_AS_DEFAULT_BUY_PRICE)?int($conf->global->MARGIN_PMP_AS_DEFAULT_BUY_PRICE):1); ?>;
|
// If margin is calculated on PMP, we set it by defaut (but only if value is not 0)
|
||||||
|
var defaultbuyprice = <?php echo ((isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == 'pmp')?1:0); ?>;
|
||||||
if (this.price > 0 && 1 == defaultbuyprice) { defaultkey = this.id; defaultprice = this.price; }
|
if (this.price > 0 && 1 == defaultbuyprice) { defaultkey = this.id; defaultprice = this.price; }
|
||||||
options += '<option value="'+this.id+'" price="'+this.price+'">'+this.label+'</option>';
|
options += '<option value="'+this.id+'" price="'+this.price+'">'+this.label+'</option>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,6 +49,7 @@ $date_start = dol_mktime(0, 0, 0, GETPOST('date_debutmonth'), GETPOST('date_debu
|
|||||||
$date_end = dol_mktime(0, 0, 0, GETPOST('date_finmonth'), GETPOST('date_finday'), GETPOST('date_finyear'));
|
$date_end = dol_mktime(0, 0, 0, GETPOST('date_finmonth'), GETPOST('date_finday'), GETPOST('date_finyear'));
|
||||||
$date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('dateyear'));
|
$date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('dateyear'));
|
||||||
$fk_projet=GETPOST('fk_projet');
|
$fk_projet=GETPOST('fk_projet');
|
||||||
|
$vatrate=GETPOST('vatrate');
|
||||||
$ref=GETPOST("ref",'alpha');
|
$ref=GETPOST("ref",'alpha');
|
||||||
|
|
||||||
// If socid provided by ajax company selector
|
// If socid provided by ajax company selector
|
||||||
@ -178,7 +179,7 @@ if ($action == 'update' && $user->rights->expensereport->creer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)
|
if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
@ -220,6 +221,8 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
|
|
||||||
if ($emailTo && $emailFrom)
|
if ($emailTo && $emailFrom)
|
||||||
{
|
{
|
||||||
|
$filename=array(); $filedir=array(); $mimetype=array();
|
||||||
|
|
||||||
// SUBJECT
|
// SUBJECT
|
||||||
$subject = $langs->trans("ExpenseReportWaitingForApproval");
|
$subject = $langs->trans("ExpenseReportWaitingForApproval");
|
||||||
|
|
||||||
@ -234,7 +237,6 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
|
|
||||||
if($resultPDF):
|
if($resultPDF):
|
||||||
// ATTACHMENT
|
// ATTACHMENT
|
||||||
$filename=array(); $filedir=array(); $mimetype=array();
|
|
||||||
array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
|
array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
|
||||||
array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf");
|
array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf");
|
||||||
array_push($mimetype,"application/pdf");
|
array_push($mimetype,"application/pdf");
|
||||||
@ -260,7 +262,7 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
|
|||||||
if ($mailfile->error)
|
if ($mailfile->error)
|
||||||
{
|
{
|
||||||
$mesg='';
|
$mesg='';
|
||||||
$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
|
$mesg.=$langs->trans('ErrorFailedToSendMail', $emailFrom, $emailTo);
|
||||||
$mesg.='<br>'.$mailfile->error;
|
$mesg.='<br>'.$mailfile->error;
|
||||||
setEventMessage($mesg,'errors');
|
setEventMessage($mesg,'errors');
|
||||||
}
|
}
|
||||||
@ -666,123 +668,6 @@ if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && GETPOST('detail_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == "confirm_paid" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->to_paid)
|
|
||||||
{
|
|
||||||
$object = new ExpenseReport($db);
|
|
||||||
$object->fetch($id);
|
|
||||||
|
|
||||||
$result = $object->setPaid($user);
|
|
||||||
|
|
||||||
if ($result > 0)
|
|
||||||
{
|
|
||||||
// Define output language
|
|
||||||
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
|
||||||
{
|
|
||||||
$outputlangs = $langs;
|
|
||||||
$newlang = '';
|
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
|
||||||
if (! empty($newlang)) {
|
|
||||||
$outputlangs = new Translate("", $conf);
|
|
||||||
$outputlangs->setDefaultLang($newlang);
|
|
||||||
}
|
|
||||||
$model=$object->modelpdf;
|
|
||||||
$ret = $object->fetch($id); // Reload to get new records
|
|
||||||
|
|
||||||
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($result > 0)
|
|
||||||
{
|
|
||||||
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
|
||||||
{
|
|
||||||
// Send mail
|
|
||||||
|
|
||||||
// TO
|
|
||||||
$destinataire = new User($db);
|
|
||||||
$destinataire->fetch($object->fk_user_author);
|
|
||||||
$emailTo = $destinataire->email;
|
|
||||||
|
|
||||||
// FROM
|
|
||||||
$expediteur = new User($db);
|
|
||||||
$expediteur->fetch($object->fk_user_paid);
|
|
||||||
$emailFrom = $expediteur->email;
|
|
||||||
|
|
||||||
// SUBJECT
|
|
||||||
$subject = "' ERP - Note de frais payée";
|
|
||||||
|
|
||||||
// CONTENT
|
|
||||||
$message = "Bonjour {$destinataire->firstname},\n\n";
|
|
||||||
$message.= "Votre note de frais \"{$object->ref}\" vient d'être payée.\n";
|
|
||||||
$message.= "- Payeur : {$expediteur->firstname} {$expediteur->lastname}\n";
|
|
||||||
$message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n";
|
|
||||||
$message.= "Bien cordialement,\n' SI";
|
|
||||||
|
|
||||||
// Génération du pdf avant attachement
|
|
||||||
$object->setDocModel($user,"");
|
|
||||||
$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
|
|
||||||
|
|
||||||
// PREPARE SEND
|
|
||||||
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message);
|
|
||||||
|
|
||||||
if(!$mailfile->error):
|
|
||||||
|
|
||||||
// SEND
|
|
||||||
$result=$mailfile->sendfile();
|
|
||||||
if ($result):
|
|
||||||
// Insert écriture dans le compte courant
|
|
||||||
$idTrip = $id;
|
|
||||||
$idAccount = 1;
|
|
||||||
|
|
||||||
$object = new ExpenseReport($db);
|
|
||||||
$object->fetch($idTrip);
|
|
||||||
|
|
||||||
$datePaiement = explode("-",$object->date_paiement);
|
|
||||||
|
|
||||||
$dateop = dol_mktime(12,0,0,$datePaiement[1],$datePaiement[2],$datePaiement[0]);
|
|
||||||
$operation = $object->code_paiement;
|
|
||||||
$label = "Règlement ".$object->ref;
|
|
||||||
$amount = - price2num($object->total_ttc);
|
|
||||||
$num_chq = '';
|
|
||||||
$cat1 = '';
|
|
||||||
|
|
||||||
$user = new User($db);
|
|
||||||
$user->fetch($object->fk_user_paid);
|
|
||||||
|
|
||||||
$acct=new Account($db,$idAccount);
|
|
||||||
$insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user);
|
|
||||||
|
|
||||||
if ($insertid > 0):
|
|
||||||
$sql = " UPDATE ".MAIN_DB_PREFIX."expensereport as d";
|
|
||||||
$sql.= " SET integration_compta = 1, fk_bank_account = $idAccount";
|
|
||||||
$sql.= " WHERE rowid = $idTrip";
|
|
||||||
$resql=$db->query($sql);
|
|
||||||
if($result):
|
|
||||||
Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
|
|
||||||
exit;
|
|
||||||
else:
|
|
||||||
dol_print_error($db);
|
|
||||||
endif;
|
|
||||||
else:
|
|
||||||
dol_print_error($db,$acct->error);
|
|
||||||
endif;
|
|
||||||
endif;
|
|
||||||
|
|
||||||
else:
|
|
||||||
|
|
||||||
$mesg="Impossible d'envoyer l'email.";
|
|
||||||
|
|
||||||
endif;
|
|
||||||
// END - Send mail
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->creer)
|
if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->creer)
|
||||||
{
|
{
|
||||||
$object = new ExpenseReport($db);
|
$object = new ExpenseReport($db);
|
||||||
@ -827,16 +712,96 @@ if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 &&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'set_paid')
|
if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid)
|
||||||
{
|
{
|
||||||
if ($object->set_paid($id) >= 0)
|
$object = new ExpenseReport($db);
|
||||||
|
$object->fetch($id);
|
||||||
|
|
||||||
|
$result = $object->set_paid($id, $user);
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
|
// Define output language
|
||||||
exit;
|
if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE))
|
||||||
|
{
|
||||||
|
$outputlangs = $langs;
|
||||||
|
$newlang = '';
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha');
|
||||||
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
|
||||||
|
if (! empty($newlang)) {
|
||||||
|
$outputlangs = new Translate("", $conf);
|
||||||
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$model=$object->modelpdf;
|
||||||
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
|
||||||
|
$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
|
||||||
|
{
|
||||||
|
// Send mail
|
||||||
|
|
||||||
|
// TO
|
||||||
|
$destinataire = new User($db);
|
||||||
|
$destinataire->fetch($object->fk_user_author);
|
||||||
|
$emailTo = $destinataire->email;
|
||||||
|
|
||||||
|
// FROM
|
||||||
|
$expediteur = new User($db);
|
||||||
|
$expediteur->fetch($user->id);
|
||||||
|
$emailFrom = $expediteur->email;
|
||||||
|
|
||||||
|
// SUBJECT
|
||||||
|
$subject = "'ERP - Note de frais payée";
|
||||||
|
|
||||||
|
// CONTENT
|
||||||
|
$message = "Bonjour {$destinataire->firstname},\n\n";
|
||||||
|
$message.= "Votre note de frais \"{$object->ref}\" vient d'être payée.\n";
|
||||||
|
$message.= "- Payeur : {$expediteur->firstname} {$expediteur->lastname}\n";
|
||||||
|
$message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n";
|
||||||
|
$message.= "Bien cordialement,\n' SI";
|
||||||
|
|
||||||
|
// Generate pdf before attachment
|
||||||
|
$object->setDocModel($user,"");
|
||||||
|
$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
|
||||||
|
|
||||||
|
// PREPARE SEND
|
||||||
|
$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message);
|
||||||
|
|
||||||
|
if(!$mailfile->error):
|
||||||
|
|
||||||
|
// SEND
|
||||||
|
$result=$mailfile->sendfile();
|
||||||
|
if ($result):
|
||||||
|
|
||||||
|
// Retour
|
||||||
|
if($result):
|
||||||
|
Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
|
||||||
|
exit;
|
||||||
|
else:
|
||||||
|
dol_print_error($db);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
else:
|
||||||
|
dol_print_error($db,$acct->error);
|
||||||
|
endif;
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
$mesg="Impossible d'envoyer l'email.";
|
||||||
|
|
||||||
|
endif;
|
||||||
|
// END - Send mail
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
setEventMessage($object->error, 'errors');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == "addline")
|
if ($action == "addline")
|
||||||
@ -859,7 +824,8 @@ if ($action == "addline")
|
|||||||
|
|
||||||
$object_ligne->fk_c_type_fees = GETPOST('fk_c_type_fees');
|
$object_ligne->fk_c_type_fees = GETPOST('fk_c_type_fees');
|
||||||
|
|
||||||
$object_ligne->vatrate = price2num(GETPOST('vatrate'));
|
$object_ligne->fk_c_tva = GETPOST('fk_c_tva');
|
||||||
|
$object_ligne->vatrate = price2num($vatrate);
|
||||||
|
|
||||||
$object_ligne->fk_projet = $fk_projet;
|
$object_ligne->fk_projet = $fk_projet;
|
||||||
|
|
||||||
@ -904,10 +870,10 @@ if ($action == "addline")
|
|||||||
{
|
{
|
||||||
$object_ligne->fk_expensereport = $_POST['fk_expensereport'];
|
$object_ligne->fk_expensereport = $_POST['fk_expensereport'];
|
||||||
|
|
||||||
$type = 0; // TODO What if service
|
$type = 0; // TODO What if service ?
|
||||||
$tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type);
|
$tmp = calcul_price_total($qty, $up, 0, $vatrate, 0, 0, 0, 'TTC', 0, $type);
|
||||||
|
|
||||||
$object_ligne->vatrate = price2num(GETPOST('vatrate'));
|
$object_ligne->vatrate = price2num($vatrate);
|
||||||
$object_ligne->total_ttc = $tmp[2];
|
$object_ligne->total_ttc = $tmp[2];
|
||||||
$object_ligne->total_ht = $tmp[0];
|
$object_ligne->total_ht = $tmp[0];
|
||||||
$object_ligne->total_tva = $tmp[1];
|
$object_ligne->total_tva = $tmp[1];
|
||||||
@ -1308,7 +1274,7 @@ else
|
|||||||
print '<td>'.$langs->trans("AUTHORPAIEMENT").'</td>';
|
print '<td>'.$langs->trans("AUTHORPAIEMENT").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$userfee=new User($db);
|
$userfee=new User($db);
|
||||||
$userfee->fetch($object->fk_user_paid);
|
$userfee->fetch($user->id);
|
||||||
print $userfee->getNomUrl(1);
|
print $userfee->getNomUrl(1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1350,7 +1316,7 @@ else
|
|||||||
dol_fiche_head($head, 'card', $langs->trans("TripCard"), 0, 'trip');
|
dol_fiche_head($head, 'card', $langs->trans("TripCard"), 0, 'trip');
|
||||||
|
|
||||||
if ($action == 'save'):
|
if ($action == 'save'):
|
||||||
$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_save","","",1);
|
$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_validate","","",1);
|
||||||
if ($ret == 'html') print '<br>';
|
if ($ret == 'html') print '<br>';
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
@ -1399,7 +1365,7 @@ else
|
|||||||
if ($ret == 'html') print '<br>';
|
if ($ret == 'html') print '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<table class="border" width="100%">';
|
print '<table class="border centpercent">';
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
|
||||||
|
|
||||||
@ -1426,6 +1392,7 @@ else
|
|||||||
print '<td>'.$langs->trans("Statut").'</td>';
|
print '<td>'.$langs->trans("Statut").'</td>';
|
||||||
print '<td colspan="2">'.$object->getLibStatut(4).'</td>';
|
print '<td colspan="2">'.$object->getLibStatut(4).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("NotePublic").'</td>';
|
print '<td>'.$langs->trans("NotePublic").'</td>';
|
||||||
print '<td colspan="2">'.$object->note_public.'</td>';
|
print '<td colspan="2">'.$object->note_public.'</td>';
|
||||||
@ -1529,20 +1496,6 @@ else
|
|||||||
print '<td>'.$langs->trans("DATE_SAVE").'</td>';
|
print '<td>'.$langs->trans("DATE_SAVE").'</td>';
|
||||||
print '<td>'.dol_print_date($object->date_create,'dayhour').'</td></tr>';
|
print '<td>'.dol_print_date($object->date_create,'dayhour').'</td></tr>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
if($object->fk_statut==6)
|
|
||||||
{
|
|
||||||
print '<tr>';
|
|
||||||
print '<td>'.$langs->trans("AUTHORPAIEMENT").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
$userfee=new User($db);
|
|
||||||
$userfee->fetch($object->fk_user_paid);
|
|
||||||
print $userfee->getNomUrl(1);
|
|
||||||
print '</td></tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td>'.$langs->trans("DATE_PAIEMENT").'</td>';
|
|
||||||
print '<td>'.$object->date_paiement.'</td></tr>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// User to inform
|
// User to inform
|
||||||
if($object->fk_statut<3) // informed
|
if($object->fk_statut<3) // informed
|
||||||
@ -1614,6 +1567,22 @@ else
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($object->fk_statut==6)
|
||||||
|
{
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>'.$langs->trans("AUTHORPAIEMENT").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
$userfee=new User($db);
|
||||||
|
$userfee->fetch($object->fk_user_paid);
|
||||||
|
print $userfee->getNomUrl(1);
|
||||||
|
print '</td></tr>';
|
||||||
|
print '<tr>';
|
||||||
|
print '<td>'.$langs->trans("DATE_PAIEMENT").'</td>';
|
||||||
|
print '<td>'.$object->date_paiement.'</td></tr>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -1999,9 +1968,9 @@ if ($action != 'create' && $action != 'edit')
|
|||||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/expensereport/payment/payment.php?id=' . $object->id . '&action=create">' . $langs->trans('DoPayment') . '</a></div>';
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/expensereport/payment/payment.php?id=' . $object->id . '&action=create">' . $langs->trans('DoPayment') . '</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($object->statut == 1 && round($remaintopay) == 0 && $object->paid == 0 && $user->rights->don->creer)
|
if (round($remaintopay) == 0 && $object->paid == 0)
|
||||||
{
|
{
|
||||||
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?rowid='.$object->id.'&action=set_paid">'.$langs->trans("ClassifyPaid")."</a></div>";
|
print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id='.$object->id.'&action=set_paid">'.$langs->trans("ClassifyPaid")."</a></div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancel
|
// Cancel
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2011 Dimitri Mouillard <dmouillard@teclib.com>
|
/* Copyright (C) 2011 Dimitri Mouillard <dmouillard@teclib.com>
|
||||||
* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 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
|
||||||
@ -88,8 +89,6 @@ class ExpenseReport extends CommonObject
|
|||||||
var $fk_user_approve;
|
var $fk_user_approve;
|
||||||
|
|
||||||
// Paiement
|
// Paiement
|
||||||
var $date_paiement;
|
|
||||||
var $fk_user_paid;
|
|
||||||
var $user_paid_infos;
|
var $user_paid_infos;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -112,7 +111,7 @@ class ExpenseReport extends CommonObject
|
|||||||
|
|
||||||
// List of language codes for status
|
// List of language codes for status
|
||||||
$this->statuts_short = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
$this->statuts_short = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
||||||
$this->statuts = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
$this->statuts = array(0 => 'Draft', 2 => 'ValidatedWaitingApproval', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
||||||
$this->statuts_logo = array(0 => 'statut0', 2 => 'statut1', 4 => 'statut5', 5 => 'statut3', 6 => 'statut6', 99 => 'statut8');
|
$this->statuts_logo = array(0 => 'statut0', 2 => 'statut1', 4 => 'statut5', 5 => 'statut3', 6 => 'statut6', 99 => 'statut8');
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -241,7 +240,6 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= " , fk_user_author = ".($user->id > 0 ? "'".$user->id."'":"null");
|
$sql.= " , fk_user_author = ".($user->id > 0 ? "'".$user->id."'":"null");
|
||||||
$sql.= " , fk_user_validator = ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
$sql.= " , fk_user_validator = ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null");
|
||||||
$sql.= " , fk_user_valid = ".($this->fk_user_valid > 0 ? $this->fk_user_valid:"null");
|
$sql.= " , fk_user_valid = ".($this->fk_user_valid > 0 ? $this->fk_user_valid:"null");
|
||||||
$sql.= " , fk_user_paid = ".($this->fk_user_paid > 0 ? $this->fk_user_paid:"null");
|
|
||||||
$sql.= " , fk_statut = ".($this->fk_statut >= 0 ? $this->fk_statut:'0');
|
$sql.= " , fk_statut = ".($this->fk_statut >= 0 ? $this->fk_statut:'0');
|
||||||
$sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
$sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null");
|
||||||
$sql.= " , note_public = ".(!empty($this->note_public)?"'".$this->db->escape($this->note_public)."'":"''");
|
$sql.= " , note_public = ".(!empty($this->note_public)?"'".$this->db->escape($this->note_public)."'":"''");
|
||||||
@ -277,9 +275,9 @@ class ExpenseReport extends CommonObject
|
|||||||
$sql.= " d.detail_refuse, d.detail_cancel, d.fk_user_refuse, d.fk_user_cancel,"; // ACTIONS
|
$sql.= " d.detail_refuse, d.detail_cancel, d.fk_user_refuse, d.fk_user_cancel,"; // ACTIONS
|
||||||
$sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS
|
$sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS
|
||||||
$sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int)
|
$sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int)
|
||||||
$sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valid, d.date_approve, d.date_paiement,"; // DATES (datetime)
|
$sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valid, d.date_approve,"; // DATES (datetime)
|
||||||
$sql.= " d.fk_user_author, d.fk_user_validator, d.fk_statut as status, d.fk_c_paiement,";
|
$sql.= " d.fk_user_author, d.fk_user_validator, d.fk_statut as status, d.fk_c_paiement,";
|
||||||
$sql.= " d.fk_user_valid, d.fk_user_approve, d.fk_user_paid,";
|
$sql.= " d.fk_user_valid, d.fk_user_approve,";
|
||||||
$sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement
|
$sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as dp ON d.fk_c_paiement = dp.id";
|
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as dp ON d.fk_c_paiement = dp.id";
|
||||||
if ($ref) $sql.= " WHERE d.ref = '".$this->db->escape($ref)."'";
|
if ($ref) $sql.= " WHERE d.ref = '".$this->db->escape($ref)."'";
|
||||||
@ -305,7 +303,6 @@ class ExpenseReport extends CommonObject
|
|||||||
|
|
||||||
$this->date_debut = $this->db->jdate($obj->date_debut);
|
$this->date_debut = $this->db->jdate($obj->date_debut);
|
||||||
$this->date_fin = $this->db->jdate($obj->date_fin);
|
$this->date_fin = $this->db->jdate($obj->date_fin);
|
||||||
$this->date_paiement = $this->db->jdate($obj->date_paiement);
|
|
||||||
$this->date_valid = $this->db->jdate($obj->date_valid);
|
$this->date_valid = $this->db->jdate($obj->date_valid);
|
||||||
$this->date_approve = $this->db->jdate($obj->date_approve);
|
$this->date_approve = $this->db->jdate($obj->date_approve);
|
||||||
$this->date_create = $this->db->jdate($obj->date_create);
|
$this->date_create = $this->db->jdate($obj->date_create);
|
||||||
@ -318,7 +315,6 @@ class ExpenseReport extends CommonObject
|
|||||||
$this->fk_user_refuse = $obj->fk_user_refuse;
|
$this->fk_user_refuse = $obj->fk_user_refuse;
|
||||||
$this->fk_user_cancel = $obj->fk_user_cancel;
|
$this->fk_user_cancel = $obj->fk_user_cancel;
|
||||||
$this->fk_user_approve = $obj->fk_user_approve;
|
$this->fk_user_approve = $obj->fk_user_approve;
|
||||||
$this->fk_user_paid = $obj->fk_user_paid;
|
|
||||||
|
|
||||||
$user_author = new User($this->db);
|
$user_author = new User($this->db);
|
||||||
if ($this->fk_user_author > 0) $user_author->fetch($this->fk_user_author);
|
if ($this->fk_user_author > 0) $user_author->fetch($this->fk_user_author);
|
||||||
@ -341,13 +337,6 @@ class ExpenseReport extends CommonObject
|
|||||||
$this->user_valid_infos = dolGetFirstLastname($user_valid->firstname, $user_valid->lastname);
|
$this->user_valid_infos = dolGetFirstLastname($user_valid->firstname, $user_valid->lastname);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->fk_statut==6)
|
|
||||||
{
|
|
||||||
$user_paid = new User($this->db);
|
|
||||||
if ($this->fk_user_paid > 0) $user_paid->fetch($this->fk_user_paid);
|
|
||||||
$this->user_paid_infos = dolGetFirstLastname($user_paid->firstname, $user_paid->lastname);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->libelle_statut = $obj->libelle_statut;
|
$this->libelle_statut = $obj->libelle_statut;
|
||||||
$this->libelle_paiement = $obj->libelle_paiement;
|
$this->libelle_paiement = $obj->libelle_paiement;
|
||||||
$this->code_statut = $obj->code_statut;
|
$this->code_statut = $obj->code_statut;
|
||||||
@ -376,13 +365,16 @@ class ExpenseReport extends CommonObject
|
|||||||
* Classify the expense report as paid
|
* Classify the expense report as paid
|
||||||
*
|
*
|
||||||
* @param int $id id of expense report
|
* @param int $id id of expense report
|
||||||
* @return int <0 if KO, >0 if OK
|
* @param user $fuser User
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function set_paid($id)
|
function set_paid($id, $fuser)
|
||||||
{
|
{
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."expensereport SET fk_statut = 6";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."expensereport";
|
||||||
|
$sql.= " SET fk_statut = 6;
|
||||||
$sql.= " WHERE rowid = $id AND fk_statut = 5";
|
$sql.= " WHERE rowid = $id AND fk_statut = 5";
|
||||||
|
|
||||||
|
dol_syslog(get_class($this)."::set_paid sql=".$sql, LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
@ -1017,41 +1009,6 @@ class ExpenseReport extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* setPaid
|
|
||||||
*
|
|
||||||
* @param User $fuser User
|
|
||||||
* @return int <0 if KO, >0 if OK
|
|
||||||
*/
|
|
||||||
function setPaid($fuser)
|
|
||||||
{
|
|
||||||
$now= dol_now();
|
|
||||||
|
|
||||||
$this->date_paiement = $this->db->idate($now);
|
|
||||||
if ($this->fk_statut != 6)
|
|
||||||
{
|
|
||||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
|
|
||||||
$sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id.",";
|
|
||||||
$sql.= " date_paiement='".$this->db->idate($this->date_paiement)."'";
|
|
||||||
$sql.= ' WHERE rowid = '.$this->id;
|
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::setPaid sql=".$sql, LOG_DEBUG);
|
|
||||||
if ($this->db->query($sql))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->error=$this->db->error();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dol_syslog(get_class($this)."::set_paid expensereport already with paid status", LOG_WARNING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set_unpaid
|
* set_unpaid
|
||||||
*
|
*
|
||||||
|
|||||||
@ -126,9 +126,8 @@ if (isset($_POST['action']))
|
|||||||
$outputlangs = $langs;
|
$outputlangs = $langs;
|
||||||
$outputlangs->charset_output = 'UTF-8';
|
$outputlangs->charset_output = 'UTF-8';
|
||||||
|
|
||||||
$sql = "SELECT d.rowid, d.ref, d.date_paiement, d.total_ht, d.total_tva, d.total_ttc";
|
$sql = "SELECT d.rowid, d.ref, d.total_ht, d.total_tva, d.total_ttc";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d";
|
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d";
|
||||||
$sql.= " WHERE date_paiement LIKE '".$select_date."%'";
|
|
||||||
$sql.= " ORDER BY d.rowid";
|
$sql.= " ORDER BY d.rowid";
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -146,7 +145,7 @@ if (isset($_POST['action']))
|
|||||||
$objet->total_tva = number_format($objet->total_tva,2);
|
$objet->total_tva = number_format($objet->total_tva,2);
|
||||||
$objet->total_ttc = number_format($objet->total_ttc,2);
|
$objet->total_ttc = number_format($objet->total_ttc,2);
|
||||||
$objet->ref = trim($objet->ref);
|
$objet->ref = trim($objet->ref);
|
||||||
$ligne.= "{$objet->rowid}, {$objet->ref}, ----, {$objet->date_paiement}, {$objet->total_ht}, {$objet->total_tva}, {$objet->total_ttc}\n";
|
$ligne.= "{$objet->rowid}, {$objet->ref}, ----, {$objet->total_ht}, {$objet->total_tva}, {$objet->total_ttc}\n";
|
||||||
|
|
||||||
$ligne.= "--->, Ligne, Type, Description, ----, ----, ----\n";
|
$ligne.= "--->, Ligne, Type, Description, ----, ----, ----\n";
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2003 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-2011 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
*
|
*
|
||||||
@ -70,13 +70,11 @@ $totalnb=$totalsum=0;
|
|||||||
$sql = "SELECT tf.code, tf.label, count(de.rowid) as nb, sum(de.total_ht) as km";
|
$sql = "SELECT tf.code, tf.label, count(de.rowid) as nb, sum(de.total_ht) as km";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d, ".MAIN_DB_PREFIX."expensereport_det as de, ".MAIN_DB_PREFIX."c_type_fees as tf";
|
$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d, ".MAIN_DB_PREFIX."expensereport_det as de, ".MAIN_DB_PREFIX."c_type_fees as tf";
|
||||||
$sql.= " WHERE de.fk_expensereport = d.rowid AND de.fk_c_type_fees = tf.id";
|
$sql.= " WHERE de.fk_expensereport = d.rowid AND de.fk_c_type_fees = tf.id";
|
||||||
|
|
||||||
// RESTRICT RIGHTS
|
// RESTRICT RIGHTS
|
||||||
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous))
|
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous))
|
||||||
{
|
{
|
||||||
$sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n";
|
$sql.= " AND d.fk_user_author IN (".join(',',$childids).")\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql.= " GROUP BY tf.code, tf.label";
|
$sql.= " GROUP BY tf.code, tf.label";
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -202,7 +200,7 @@ if ($result)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<tr '.$bc[$var].'><td colspan="2">'.$langs->trans("None").'</td></tr>';
|
print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
|
||||||
}
|
}
|
||||||
print '</table><br>';
|
print '</table><br>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,8 +33,6 @@ if ($_GET["action"] == 'confirm_ndf_to_account' && $_GET["confirm"] == "yes"):
|
|||||||
$expensereport = new ExpenseReport($db);
|
$expensereport = new ExpenseReport($db);
|
||||||
$expensereport->fetch($idTrip,$user);
|
$expensereport->fetch($idTrip,$user);
|
||||||
|
|
||||||
$datePaiement = explode("-",$expensereport->date_paiement);
|
|
||||||
|
|
||||||
$dateop = dol_mktime(12,0,0,$datePaiement[1],$datePaiement[2],$datePaiement[0]);
|
$dateop = dol_mktime(12,0,0,$datePaiement[1],$datePaiement[2],$datePaiement[0]);
|
||||||
$operation = $expensereport->code_paiement;
|
$operation = $expensereport->code_paiement;
|
||||||
$label = "Règlement ".$expensereport->ref;
|
$label = "Règlement ".$expensereport->ref;
|
||||||
@ -43,7 +41,7 @@ if ($_GET["action"] == 'confirm_ndf_to_account' && $_GET["confirm"] == "yes"):
|
|||||||
$cat1 = '';
|
$cat1 = '';
|
||||||
|
|
||||||
$user = new User($db);
|
$user = new User($db);
|
||||||
$user->fetch($expensereport->fk_user_paid);
|
$user->fetch($user->id);
|
||||||
|
|
||||||
$acct=new Account($db,$idAccount);
|
$acct=new Account($db,$idAccount);
|
||||||
$insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user);
|
$insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user);
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
/*!
|
/*!
|
||||||
* jQuery blockUI plugin
|
* jQuery blockUI plugin
|
||||||
* Version 2.43 (29-JUL-2012)
|
* Version 2.70.0-2014.11.23
|
||||||
* @requires jQuery v1.2.3 or later
|
* Requires jQuery v1.7 or later
|
||||||
*
|
*
|
||||||
* Examples at: http://malsup.com/jquery/block/
|
* Examples at: http://malsup.com/jquery/block/
|
||||||
* Copyright (c) 2007-2010 M. Alsup
|
* Copyright (c) 2007-2013 M. Alsup
|
||||||
* Dual licensed under the MIT and GPL licenses:
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
@ -13,22 +13,20 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
;(function() {
|
;(function() {
|
||||||
|
/*jshint eqeqeq:false curly:false latedef:false */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function setup($) {
|
function setup($) {
|
||||||
if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
|
|
||||||
alert('blockUI requires jQuery v1.2.3 or later! You are using v' + $.fn.jquery);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn._fadeIn = $.fn.fadeIn;
|
$.fn._fadeIn = $.fn.fadeIn;
|
||||||
|
|
||||||
var noOp = function() {};
|
var noOp = $.noop || function() {};
|
||||||
|
|
||||||
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
|
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
|
||||||
// retarded userAgent strings on Vista)
|
// confusing userAgent strings on Vista)
|
||||||
|
var msie = /MSIE/.test(navigator.userAgent);
|
||||||
|
var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
|
||||||
var mode = document.documentMode || 0;
|
var mode = document.documentMode || 0;
|
||||||
var setExpr = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);
|
var setExpr = $.isFunction( document.createElement('div').style.setExpression );
|
||||||
var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode;
|
|
||||||
|
|
||||||
// global $ methods for blocking/unblocking the entire page
|
// global $ methods for blocking/unblocking the entire page
|
||||||
$.blockUI = function(opts) { install(window, opts); };
|
$.blockUI = function(opts) { install(window, opts); };
|
||||||
@ -39,17 +37,47 @@
|
|||||||
var $m = $('<div class="growlUI"></div>');
|
var $m = $('<div class="growlUI"></div>');
|
||||||
if (title) $m.append('<h1>'+title+'</h1>');
|
if (title) $m.append('<h1>'+title+'</h1>');
|
||||||
if (message) $m.append('<h2>'+message+'</h2>');
|
if (message) $m.append('<h2>'+message+'</h2>');
|
||||||
if (timeout == undefined) timeout = 3000;
|
if (timeout === undefined) timeout = 3000;
|
||||||
$.blockUI({
|
|
||||||
message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
|
// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
|
||||||
timeout: timeout, showOverlay: false,
|
var callBlock = function(opts) {
|
||||||
onUnblock: onClose,
|
opts = opts || {};
|
||||||
css: $.blockUI.defaults.growlCSS
|
|
||||||
|
$.blockUI({
|
||||||
|
message: $m,
|
||||||
|
fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
|
||||||
|
fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
|
||||||
|
timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
|
||||||
|
centerY: false,
|
||||||
|
showOverlay: false,
|
||||||
|
onUnblock: onClose,
|
||||||
|
css: $.blockUI.defaults.growlCSS
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
callBlock();
|
||||||
|
var nonmousedOpacity = $m.css('opacity');
|
||||||
|
$m.mouseover(function() {
|
||||||
|
callBlock({
|
||||||
|
fadeIn: 0,
|
||||||
|
timeout: 30000
|
||||||
|
});
|
||||||
|
|
||||||
|
var displayBlock = $('.blockMsg');
|
||||||
|
displayBlock.stop(); // cancel fadeout if it has started
|
||||||
|
displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
|
||||||
|
}).mouseout(function() {
|
||||||
|
$('.blockMsg').fadeOut(1000);
|
||||||
});
|
});
|
||||||
|
// End konapun additions
|
||||||
};
|
};
|
||||||
|
|
||||||
// plugin method for blocking element content
|
// plugin method for blocking element content
|
||||||
$.fn.block = function(opts) {
|
$.fn.block = function(opts) {
|
||||||
|
if ( this[0] === window ) {
|
||||||
|
$.blockUI( opts );
|
||||||
|
return this;
|
||||||
|
}
|
||||||
var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
|
var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
|
||||||
this.each(function() {
|
this.each(function() {
|
||||||
var $el = $(this);
|
var $el = $(this);
|
||||||
@ -59,30 +87,35 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
if ($.css(this,'position') == 'static')
|
if ($.css(this,'position') == 'static') {
|
||||||
this.style.position = 'relative';
|
this.style.position = 'relative';
|
||||||
if ($.browser.msie)
|
$(this).data('blockUI.static', true);
|
||||||
this.style.zoom = 1; // force 'hasLayout'
|
}
|
||||||
|
this.style.zoom = 1; // force 'hasLayout' in ie
|
||||||
install(this, opts);
|
install(this, opts);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// plugin method for unblocking element content
|
// plugin method for unblocking element content
|
||||||
$.fn.unblock = function(opts) {
|
$.fn.unblock = function(opts) {
|
||||||
|
if ( this[0] === window ) {
|
||||||
|
$.unblockUI( opts );
|
||||||
|
return this;
|
||||||
|
}
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
remove(this, opts);
|
remove(this, opts);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$.blockUI.version = 2.42; // 2nd generation blocking at no extra cost!
|
$.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
|
||||||
|
|
||||||
// override these in your code to change the default behavior and style
|
// override these in your code to change the default behavior and style
|
||||||
$.blockUI.defaults = {
|
$.blockUI.defaults = {
|
||||||
// message displayed when blocking (use null for no message)
|
// message displayed when blocking (use null for no message)
|
||||||
message: '<h1>Please wait...</h1>',
|
message: '<h1>Please wait...</h1>',
|
||||||
|
|
||||||
title: null, // title string; only used when theme == true
|
title: null, // title string; only used when theme == true
|
||||||
draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
|
draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
|
||||||
|
|
||||||
theme: false, // set to true to use with jQuery UI themes
|
theme: false, // set to true to use with jQuery UI themes
|
||||||
|
|
||||||
@ -111,30 +144,35 @@
|
|||||||
|
|
||||||
// styles for the overlay
|
// styles for the overlay
|
||||||
overlayCSS: {
|
overlayCSS: {
|
||||||
backgroundColor: '#000',
|
backgroundColor: '#000',
|
||||||
opacity: 0.6,
|
opacity: 0.6,
|
||||||
cursor: 'wait'
|
cursor: 'wait'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// style to replace wait cursor before unblocking to correct issue
|
||||||
|
// of lingering wait cursor
|
||||||
|
cursorReset: 'default',
|
||||||
|
|
||||||
// styles applied when using $.growlUI
|
// styles applied when using $.growlUI
|
||||||
growlCSS: {
|
growlCSS: {
|
||||||
width: '350px',
|
width: '350px',
|
||||||
top: '10px',
|
top: '10px',
|
||||||
left: '',
|
left: '',
|
||||||
right: '10px',
|
right: '10px',
|
||||||
border: 'none',
|
border: 'none',
|
||||||
padding: '5px',
|
padding: '5px',
|
||||||
opacity: 0.6,
|
opacity: 0.6,
|
||||||
cursor: 'default',
|
cursor: 'default',
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
backgroundColor: '#000',
|
backgroundColor: '#000',
|
||||||
'-webkit-border-radius': '10px',
|
'-webkit-border-radius':'10px',
|
||||||
'-moz-border-radius': '10px',
|
'-moz-border-radius': '10px',
|
||||||
'border-radius': '10px'
|
'border-radius': '10px'
|
||||||
},
|
},
|
||||||
|
|
||||||
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
|
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
|
||||||
// (hat tip to Jorge H. N. de Vasconcelos)
|
// (hat tip to Jorge H. N. de Vasconcelos)
|
||||||
|
/*jshint scripturl:true */
|
||||||
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
|
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
|
||||||
|
|
||||||
// force usage of iframe in non-IE browsers (handy for blocking applets)
|
// force usage of iframe in non-IE browsers (handy for blocking applets)
|
||||||
@ -174,8 +212,12 @@
|
|||||||
// page blocking
|
// page blocking
|
||||||
focusInput: true,
|
focusInput: true,
|
||||||
|
|
||||||
|
// elements that can receive focus
|
||||||
|
focusableElements: ':input:enabled:visible',
|
||||||
|
|
||||||
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
|
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
|
||||||
applyPlatformOpacityRules: true,
|
// no longer needed in 2012
|
||||||
|
// applyPlatformOpacityRules: true,
|
||||||
|
|
||||||
// callback method invoked when fadeIn has completed and blocking message is visible
|
// callback method invoked when fadeIn has completed and blocking message is visible
|
||||||
onBlock: null,
|
onBlock: null,
|
||||||
@ -183,9 +225,13 @@
|
|||||||
// callback method invoked when unblocking has completed; the callback is
|
// callback method invoked when unblocking has completed; the callback is
|
||||||
// passed the element that has been unblocked (which is the window object for page
|
// passed the element that has been unblocked (which is the window object for page
|
||||||
// blocks) and the options that were passed to the unblock call:
|
// blocks) and the options that were passed to the unblock call:
|
||||||
// onUnblock(element, options)
|
// onUnblock(element, options)
|
||||||
onUnblock: null,
|
onUnblock: null,
|
||||||
|
|
||||||
|
// callback method invoked when the overlay area is clicked.
|
||||||
|
// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
|
||||||
|
onOverlayClick: null,
|
||||||
|
|
||||||
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
|
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
|
||||||
quirksmodeOffsetHack: 4,
|
quirksmodeOffsetHack: 4,
|
||||||
|
|
||||||
@ -212,6 +258,9 @@
|
|||||||
|
|
||||||
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
|
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
|
||||||
css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
|
css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
|
||||||
|
if (opts.onOverlayClick)
|
||||||
|
opts.overlayCSS.cursor = 'pointer';
|
||||||
|
|
||||||
themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
|
themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
|
||||||
msg = msg === undefined ? opts.message : msg;
|
msg = msg === undefined ? opts.message : msg;
|
||||||
|
|
||||||
@ -241,30 +290,31 @@
|
|||||||
// layer1 is the iframe layer which is used to supress bleed through of underlying content
|
// layer1 is the iframe layer which is used to supress bleed through of underlying content
|
||||||
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
|
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
|
||||||
// layer3 is the message content that is displayed while blocking
|
// layer3 is the message content that is displayed while blocking
|
||||||
|
var lyr1, lyr2, lyr3, s;
|
||||||
|
if (msie || opts.forceIframe)
|
||||||
|
lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
|
||||||
|
else
|
||||||
|
lyr1 = $('<div class="blockUI" style="display:none"></div>');
|
||||||
|
|
||||||
var lyr1 = ($.browser.msie || opts.forceIframe)
|
if (opts.theme)
|
||||||
? $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>')
|
lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
|
||||||
: $('<div class="blockUI" style="display:none"></div>');
|
else
|
||||||
|
lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
|
||||||
|
|
||||||
var lyr2 = opts.theme
|
|
||||||
? $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>')
|
|
||||||
: $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
|
|
||||||
|
|
||||||
var lyr3, s;
|
|
||||||
if (opts.theme && full) {
|
if (opts.theme && full) {
|
||||||
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
|
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
|
||||||
if ( opts.title ) {
|
if ( opts.title ) {
|
||||||
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>';
|
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>';
|
||||||
}
|
}
|
||||||
s += '<div class="ui-widget-content ui-dialog-content"></div>';
|
s += '<div class="ui-widget-content ui-dialog-content"></div>';
|
||||||
s += '</div>';
|
s += '</div>';
|
||||||
}
|
}
|
||||||
else if (opts.theme) {
|
else if (opts.theme) {
|
||||||
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
|
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
|
||||||
if ( opts.title ) {
|
if ( opts.title ) {
|
||||||
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>'
|
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>';
|
||||||
}
|
}
|
||||||
s += '<div class="ui-widget-content ui-dialog-content"></div>';
|
s += '<div class="ui-widget-content ui-dialog-content"></div>';
|
||||||
s += '</div>';
|
s += '</div>';
|
||||||
}
|
}
|
||||||
else if (full) {
|
else if (full) {
|
||||||
@ -286,12 +336,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// style the overlay
|
// style the overlay
|
||||||
if (!opts.theme && (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform))))
|
if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
|
||||||
lyr2.css(opts.overlayCSS);
|
lyr2.css(opts.overlayCSS);
|
||||||
lyr2.css('position', full ? 'fixed' : 'absolute');
|
lyr2.css('position', full ? 'fixed' : 'absolute');
|
||||||
|
|
||||||
// make iframe layer transparent in IE
|
// make iframe layer transparent in IE
|
||||||
if ($.browser.msie || opts.forceIframe)
|
if (msie || opts.forceIframe)
|
||||||
lyr1.css('opacity',0.0);
|
lyr1.css('opacity',0.0);
|
||||||
|
|
||||||
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
|
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
|
||||||
@ -308,28 +358,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
|
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
|
||||||
var expr = setExpr && (!$.boxModel || $('object,embed', full ? null : el).length > 0);
|
var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
|
||||||
if (ie6 || expr) {
|
if (ie6 || expr) {
|
||||||
// give body 100% height
|
// give body 100% height
|
||||||
if (full && opts.allowBodyStretch && $.boxModel)
|
if (full && opts.allowBodyStretch && $.support.boxModel)
|
||||||
$('html,body').css('height','100%');
|
$('html,body').css('height','100%');
|
||||||
|
|
||||||
// fix ie6 issue when blocked element has a border width
|
// fix ie6 issue when blocked element has a border width
|
||||||
if ((ie6 || !$.boxModel) && !full) {
|
if ((ie6 || !$.support.boxModel) && !full) {
|
||||||
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
|
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
|
||||||
var fixT = t ? '(0 - '+t+')' : 0;
|
var fixT = t ? '(0 - '+t+')' : 0;
|
||||||
var fixL = l ? '(0 - '+l+')' : 0;
|
var fixL = l ? '(0 - '+l+')' : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// simulate fixed position
|
// simulate fixed position
|
||||||
$.each([lyr1,lyr2,lyr3], function(i,o) {
|
$.each(layers, function(i,o) {
|
||||||
var s = o[0].style;
|
var s = o[0].style;
|
||||||
s.position = 'absolute';
|
s.position = 'absolute';
|
||||||
if (i < 2) {
|
if (i < 2) {
|
||||||
full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
|
if (full)
|
||||||
: s.setExpression('height','this.parentNode.offsetHeight + "px"');
|
s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
|
||||||
full ? s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
|
else
|
||||||
: s.setExpression('width','this.parentNode.offsetWidth + "px"');
|
s.setExpression('height','this.parentNode.offsetHeight + "px"');
|
||||||
|
if (full)
|
||||||
|
s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
|
||||||
|
else
|
||||||
|
s.setExpression('width','this.parentNode.offsetWidth + "px"');
|
||||||
if (fixL) s.setExpression('left', fixL);
|
if (fixL) s.setExpression('left', fixL);
|
||||||
if (fixT) s.setExpression('top', fixT);
|
if (fixT) s.setExpression('top', fixT);
|
||||||
}
|
}
|
||||||
@ -338,7 +392,7 @@
|
|||||||
s.marginTop = 0;
|
s.marginTop = 0;
|
||||||
}
|
}
|
||||||
else if (!opts.centerY && full) {
|
else if (!opts.centerY && full) {
|
||||||
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0;
|
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
|
||||||
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
|
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
|
||||||
s.setExpression('top',expression);
|
s.setExpression('top',expression);
|
||||||
}
|
}
|
||||||
@ -355,7 +409,7 @@
|
|||||||
$(msg).show();
|
$(msg).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($.browser.msie || opts.forceIframe) && opts.showOverlay)
|
if ((msie || opts.forceIframe) && opts.showOverlay)
|
||||||
lyr1.show(); // opacity is zero
|
lyr1.show(); // opacity is zero
|
||||||
if (opts.fadeIn) {
|
if (opts.fadeIn) {
|
||||||
var cb = opts.onBlock ? opts.onBlock : noOp;
|
var cb = opts.onBlock ? opts.onBlock : noOp;
|
||||||
@ -372,7 +426,7 @@
|
|||||||
if (msg)
|
if (msg)
|
||||||
lyr3.show();
|
lyr3.show();
|
||||||
if (opts.onBlock)
|
if (opts.onBlock)
|
||||||
opts.onBlock();
|
opts.onBlock.bind(lyr3)();
|
||||||
}
|
}
|
||||||
|
|
||||||
// bind key and mouse events
|
// bind key and mouse events
|
||||||
@ -380,7 +434,7 @@
|
|||||||
|
|
||||||
if (full) {
|
if (full) {
|
||||||
pageBlock = lyr3[0];
|
pageBlock = lyr3[0];
|
||||||
pageBlockEls = $(':input:enabled:visible',pageBlock);
|
pageBlockEls = $(opts.focusableElements,pageBlock);
|
||||||
if (opts.focusInput)
|
if (opts.focusInput)
|
||||||
setTimeout(focus, 20);
|
setTimeout(focus, 20);
|
||||||
}
|
}
|
||||||
@ -390,14 +444,18 @@
|
|||||||
if (opts.timeout) {
|
if (opts.timeout) {
|
||||||
// auto-unblock
|
// auto-unblock
|
||||||
var to = setTimeout(function() {
|
var to = setTimeout(function() {
|
||||||
full ? $.unblockUI(opts) : $(el).unblock(opts);
|
if (full)
|
||||||
|
$.unblockUI(opts);
|
||||||
|
else
|
||||||
|
$(el).unblock(opts);
|
||||||
}, opts.timeout);
|
}, opts.timeout);
|
||||||
$(el).data('blockUI.timeout', to);
|
$(el).data('blockUI.timeout', to);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
// remove the block
|
// remove the block
|
||||||
function remove(el, opts) {
|
function remove(el, opts) {
|
||||||
|
var count;
|
||||||
var full = (el == window);
|
var full = (el == window);
|
||||||
var $el = $(el);
|
var $el = $(el);
|
||||||
var data = $el.data('blockUI.history');
|
var data = $el.data('blockUI.history');
|
||||||
@ -418,21 +476,36 @@
|
|||||||
if (full) // crazy selector to handle odd field errors in ie6/7
|
if (full) // crazy selector to handle odd field errors in ie6/7
|
||||||
els = $('body').children().filter('.blockUI').add('body > .blockUI');
|
els = $('body').children().filter('.blockUI').add('body > .blockUI');
|
||||||
else
|
else
|
||||||
els = $('.blockUI', el);
|
els = $el.find('>.blockUI');
|
||||||
|
|
||||||
|
// fix cursor issue
|
||||||
|
if ( opts.cursorReset ) {
|
||||||
|
if ( els.length > 1 )
|
||||||
|
els[1].style.cursor = opts.cursorReset;
|
||||||
|
if ( els.length > 2 )
|
||||||
|
els[2].style.cursor = opts.cursorReset;
|
||||||
|
}
|
||||||
|
|
||||||
if (full)
|
if (full)
|
||||||
pageBlock = pageBlockEls = null;
|
pageBlock = pageBlockEls = null;
|
||||||
|
|
||||||
if (opts.fadeOut) {
|
if (opts.fadeOut) {
|
||||||
els.fadeOut(opts.fadeOut);
|
count = els.length;
|
||||||
setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
|
els.stop().fadeOut(opts.fadeOut, function() {
|
||||||
|
if ( --count === 0)
|
||||||
|
reset(els,data,opts,el);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
reset(els, data, opts, el);
|
reset(els, data, opts, el);
|
||||||
};
|
}
|
||||||
|
|
||||||
// move blocking element back into the DOM where it started
|
// move blocking element back into the DOM where it started
|
||||||
function reset(els,data,opts,el) {
|
function reset(els,data,opts,el) {
|
||||||
|
var $el = $(el);
|
||||||
|
if ( $el.data('blockUI.isBlocked') )
|
||||||
|
return;
|
||||||
|
|
||||||
els.each(function(i,o) {
|
els.each(function(i,o) {
|
||||||
// remove via DOM calls so we don't lose event handlers
|
// remove via DOM calls so we don't lose event handlers
|
||||||
if (this.parentNode)
|
if (this.parentNode)
|
||||||
@ -442,14 +515,24 @@
|
|||||||
if (data && data.el) {
|
if (data && data.el) {
|
||||||
data.el.style.display = data.display;
|
data.el.style.display = data.display;
|
||||||
data.el.style.position = data.position;
|
data.el.style.position = data.position;
|
||||||
|
data.el.style.cursor = 'default'; // #59
|
||||||
if (data.parent)
|
if (data.parent)
|
||||||
data.parent.appendChild(data.el);
|
data.parent.appendChild(data.el);
|
||||||
$(el).removeData('blockUI.history');
|
$el.removeData('blockUI.history');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($el.data('blockUI.static')) {
|
||||||
|
$el.css('position', 'static'); // #22
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof opts.onUnblock == 'function')
|
if (typeof opts.onUnblock == 'function')
|
||||||
opts.onUnblock(el,opts);
|
opts.onUnblock(el,opts);
|
||||||
};
|
|
||||||
|
// fix issue in Safari 6 where block artifacts remain until reflow
|
||||||
|
var body = $(document.body), w = body.width(), cssW = body[0].style.width;
|
||||||
|
body.width(w-1).width(w);
|
||||||
|
body[0].style.width = cssW;
|
||||||
|
}
|
||||||
|
|
||||||
// bind/unbind the handler
|
// bind/unbind the handler
|
||||||
function bind(b, el, opts) {
|
function bind(b, el, opts) {
|
||||||
@ -462,40 +545,47 @@
|
|||||||
$el.data('blockUI.isBlocked', b);
|
$el.data('blockUI.isBlocked', b);
|
||||||
|
|
||||||
// don't bind events when overlay is not in use or if bindEvents is false
|
// don't bind events when overlay is not in use or if bindEvents is false
|
||||||
if (!opts.bindEvents || (b && !opts.showOverlay))
|
if (!full || !opts.bindEvents || (b && !opts.showOverlay))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// bind anchors and inputs for mouse and key events
|
// bind anchors and inputs for mouse and key events
|
||||||
var events = 'mousedown mouseup keydown keypress';
|
var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
|
||||||
b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);
|
if (b)
|
||||||
|
$(document).bind(events, opts, handler);
|
||||||
|
else
|
||||||
|
$(document).unbind(events, handler);
|
||||||
|
|
||||||
// former impl...
|
// former impl...
|
||||||
// var $e = $('a,:input');
|
// var $e = $('a,:input');
|
||||||
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
|
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
|
||||||
};
|
}
|
||||||
|
|
||||||
// event handler to suppress keyboard/mouse events when blocking
|
// event handler to suppress keyboard/mouse events when blocking
|
||||||
function handler(e) {
|
function handler(e) {
|
||||||
// allow tab navigation (conditionally)
|
// allow tab navigation (conditionally)
|
||||||
if (e.keyCode && e.keyCode == 9) {
|
if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
|
||||||
if (pageBlock && e.data.constrainTabKey) {
|
if (pageBlock && e.data.constrainTabKey) {
|
||||||
var els = pageBlockEls;
|
var els = pageBlockEls;
|
||||||
var fwd = !e.shiftKey && e.target === els[els.length-1];
|
var fwd = !e.shiftKey && e.target === els[els.length-1];
|
||||||
var back = e.shiftKey && e.target === els[0];
|
var back = e.shiftKey && e.target === els[0];
|
||||||
if (fwd || back) {
|
if (fwd || back) {
|
||||||
setTimeout(function(){focus(back)},10);
|
setTimeout(function(){focus(back);},10);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var opts = e.data;
|
var opts = e.data;
|
||||||
|
var target = $(e.target);
|
||||||
|
if (target.hasClass('blockOverlay') && opts.onOverlayClick)
|
||||||
|
opts.onOverlayClick(e);
|
||||||
|
|
||||||
// allow events within the message content
|
// allow events within the message content
|
||||||
if ($(e.target).parents('div.' + opts.blockMsgClass).length > 0)
|
if (target.parents('div.' + opts.blockMsgClass).length > 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// allow events for content that is not being blocked
|
// allow events for content that is not being blocked
|
||||||
return $(e.target).parents().children().filter('div.blockUI').length == 0;
|
return target.parents().children().filter('div.blockUI').length === 0;
|
||||||
};
|
}
|
||||||
|
|
||||||
function focus(back) {
|
function focus(back) {
|
||||||
if (!pageBlockEls)
|
if (!pageBlockEls)
|
||||||
@ -503,7 +593,7 @@
|
|||||||
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
|
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
|
||||||
if (e)
|
if (e)
|
||||||
e.focus();
|
e.focus();
|
||||||
};
|
}
|
||||||
|
|
||||||
function center(el, x, y) {
|
function center(el, x, y) {
|
||||||
var p = el.parentNode, s = el.style;
|
var p = el.parentNode, s = el.style;
|
||||||
@ -511,15 +601,16 @@
|
|||||||
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
|
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
|
||||||
if (x) s.left = l > 0 ? (l+'px') : '0';
|
if (x) s.left = l > 0 ? (l+'px') : '0';
|
||||||
if (y) s.top = t > 0 ? (t+'px') : '0';
|
if (y) s.top = t > 0 ? (t+'px') : '0';
|
||||||
};
|
}
|
||||||
|
|
||||||
function sz(el, p) {
|
function sz(el, p) {
|
||||||
return parseInt($.css(el,p))||0;
|
return parseInt($.css(el,p),10)||0;
|
||||||
};
|
}
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*global define:true */
|
||||||
if (typeof define === 'function' && define.amd && define.amd.jQuery) {
|
if (typeof define === 'function' && define.amd && define.amd.jQuery) {
|
||||||
define(['jquery'], setup);
|
define(['jquery'], setup);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -231,7 +231,6 @@ CREATE TABLE llx_expensereport (
|
|||||||
date_approve datetime,
|
date_approve datetime,
|
||||||
date_refuse datetime,
|
date_refuse datetime,
|
||||||
date_cancel datetime,
|
date_cancel datetime,
|
||||||
date_paiement datetime,
|
|
||||||
tms timestamp,
|
tms timestamp,
|
||||||
fk_user_author integer NOT NULL,
|
fk_user_author integer NOT NULL,
|
||||||
fk_user_modif integer DEFAULT NULL,
|
fk_user_modif integer DEFAULT NULL,
|
||||||
@ -240,7 +239,6 @@ CREATE TABLE llx_expensereport (
|
|||||||
fk_user_approve integer DEFAULT NULL,
|
fk_user_approve integer DEFAULT NULL,
|
||||||
fk_user_refuse integer DEFAULT NULL,
|
fk_user_refuse integer DEFAULT NULL,
|
||||||
fk_user_cancel integer DEFAULT NULL,
|
fk_user_cancel integer DEFAULT NULL,
|
||||||
fk_user_paid integer DEFAULT NULL,
|
|
||||||
fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
||||||
fk_c_paiement integer DEFAULT NULL,
|
fk_c_paiement integer DEFAULT NULL,
|
||||||
paid smallint default 0 NOT NULL,
|
paid smallint default 0 NOT NULL,
|
||||||
@ -705,4 +703,4 @@ ALTER TABLE llx_holiday_logs ADD COLUMN fk_type integer NOT NULL DEFAULT 1;
|
|||||||
UPDATE llx_holiday_users SET fk_type = 1 WHERE fk_type IS NULL;
|
UPDATE llx_holiday_users SET fk_type = 1 WHERE fk_type IS NULL;
|
||||||
UPDATE llx_holiday_logs SET fk_type = 1 WHERE fk_type IS NULL;
|
UPDATE llx_holiday_logs SET fk_type = 1 WHERE fk_type IS NULL;
|
||||||
|
|
||||||
|
UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_VAT_SOLD_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTING_VAT_ACCOUNT';
|
||||||
|
|||||||
@ -34,7 +34,6 @@ CREATE TABLE llx_expensereport (
|
|||||||
date_approve datetime,
|
date_approve datetime,
|
||||||
date_refuse datetime,
|
date_refuse datetime,
|
||||||
date_cancel datetime,
|
date_cancel datetime,
|
||||||
date_paiement datetime,
|
|
||||||
tms timestamp,
|
tms timestamp,
|
||||||
fk_user_author integer NOT NULL,
|
fk_user_author integer NOT NULL,
|
||||||
fk_user_modif integer DEFAULT NULL,
|
fk_user_modif integer DEFAULT NULL,
|
||||||
@ -43,7 +42,6 @@ CREATE TABLE llx_expensereport (
|
|||||||
fk_user_approve integer DEFAULT NULL,
|
fk_user_approve integer DEFAULT NULL,
|
||||||
fk_user_refuse integer DEFAULT NULL,
|
fk_user_refuse integer DEFAULT NULL,
|
||||||
fk_user_cancel integer DEFAULT NULL,
|
fk_user_cancel integer DEFAULT NULL,
|
||||||
fk_user_paid integer DEFAULT NULL,
|
|
||||||
fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé
|
||||||
fk_c_paiement integer DEFAULT NULL,
|
fk_c_paiement integer DEFAULT NULL,
|
||||||
paid smallint default 0 NOT NULL,
|
paid smallint default 0 NOT NULL,
|
||||||
|
|||||||
@ -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
|
||||||
@ -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
|
||||||
@ -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
|
||||||
@ -1511,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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -77,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=List of events associated with the project
|
ListActionsAssociatedProject=List of events associated with the project
|
||||||
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=Activity on project this week
|
ActivityOnProjectThisWeek=Activity on project this week
|
||||||
ActivityOnProjectThisMonth=Activity on project this month
|
ActivityOnProjectThisMonth=Activity on project this month
|
||||||
ActivityOnProjectThisYear=Activity on project this year
|
ActivityOnProjectThisYear=Activity on project this year
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -141,16 +141,28 @@ print '<td align="right">'.$langs->trans('MargeBrute');
|
|||||||
print ' <input type="radio" name="MARGIN_TYPE" value="1" ';
|
print ' <input type="radio" name="MARGIN_TYPE" value="1" ';
|
||||||
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == '1')
|
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == '1')
|
||||||
print 'checked ';
|
print 'checked ';
|
||||||
print '/><br/>'.$langs->trans('MargeNette');
|
print '/><br>';
|
||||||
|
/*print $langs->trans('MargeNette');
|
||||||
print ' <input type="radio" name="MARGIN_TYPE" value="2" ';
|
print ' <input type="radio" name="MARGIN_TYPE" value="2" ';
|
||||||
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == '2')
|
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == '2')
|
||||||
print 'checked ';
|
print 'checked ';
|
||||||
print '/>';
|
print '/>';*/
|
||||||
|
// TODO Check that PMP is available when stock module is not enabled. If not, make this choice greyed when stock module disabled.
|
||||||
|
//if (! empty($conf->stock->enabled))
|
||||||
|
//{
|
||||||
|
print $langs->trans('MargeNette');
|
||||||
|
print ' <input type="radio" name="MARGIN_TYPE" value="pmp" ';
|
||||||
|
if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == 'pmp')
|
||||||
|
print 'checked ';
|
||||||
|
print '/>';
|
||||||
|
//}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'" class="button">';
|
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'" class="button">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>'.$langs->trans('MARGIN_TYPE_DETAILS').'</td>';
|
print '<td>'.$langs->trans('MARGIN_TYPE_DETAILS');
|
||||||
|
print ' ('.$langs->trans("PMP").')';
|
||||||
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
|
|||||||
@ -930,7 +930,7 @@ class Task extends CommonObject
|
|||||||
$result=array();
|
$result=array();
|
||||||
|
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
$sql.= " SUM(t.task_duration / 3600 * thm) as amount";
|
$sql.= " SUM(t.task_duration / 3600 * ".$this->db->ifsql("t.thm IS NULL", 0, "t.thm").") as amount, SUM(".$this->db->ifsql("t.thm IS NULL", 1, 0).") as nblinesnull";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
||||||
$sql.= " WHERE t.fk_task = ".$id;
|
$sql.= " WHERE t.fk_task = ".$id;
|
||||||
if (is_object($fuser) && $fuser->id > 0)
|
if (is_object($fuser) && $fuser->id > 0)
|
||||||
@ -947,6 +947,7 @@ class Task extends CommonObject
|
|||||||
$datefieldname="task_datehour";
|
$datefieldname="task_datehour";
|
||||||
$sql.=" AND (".$datefieldname." <= '".$this->db->idate($datee)."' OR ".$datefieldname." IS NULL)";
|
$sql.=" AND (".$datefieldname." <= '".$this->db->idate($datee)."' OR ".$datefieldname." IS NULL)";
|
||||||
}
|
}
|
||||||
|
//print $sql;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::getSumOfAmount", LOG_DEBUG);
|
dol_syslog(get_class($this)."::getSumOfAmount", LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
@ -955,6 +956,7 @@ class Task extends CommonObject
|
|||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
|
||||||
$result['amount'] = $obj->amount;
|
$result['amount'] = $obj->amount;
|
||||||
|
$result['nblinesnull'] = $obj->nblinesnull;
|
||||||
|
|
||||||
$this->db->free($resql);
|
$this->db->free($resql);
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
@ -357,7 +357,6 @@ foreach ($listofreferent as $key => $value)
|
|||||||
$elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee);
|
$elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee);
|
||||||
if (count($elementarray)>0 && is_array($elementarray))
|
if (count($elementarray)>0 && is_array($elementarray))
|
||||||
{
|
{
|
||||||
$var=true;
|
|
||||||
$total_ht = 0;
|
$total_ht = 0;
|
||||||
$total_ttc = 0;
|
$total_ttc = 0;
|
||||||
|
|
||||||
@ -622,7 +621,11 @@ foreach ($listofreferent as $key => $value)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($element instanceof Task) print $element->getNomUrl(1,'withproject','time');
|
if ($element instanceof Task)
|
||||||
|
{
|
||||||
|
print $element->getNomUrl(1,'withproject','time');
|
||||||
|
print ' - '.dol_trunc($element->label, 48);
|
||||||
|
}
|
||||||
else print $element->getNomUrl(1);
|
else print $element->getNomUrl(1);
|
||||||
|
|
||||||
$element_doc = $element->element;
|
$element_doc = $element->element;
|
||||||
@ -681,13 +684,19 @@ foreach ($listofreferent as $key => $value)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Amount without tax
|
// Amount without tax
|
||||||
|
$warning='';
|
||||||
if (empty($value['disableamount']))
|
if (empty($value['disableamount']))
|
||||||
{
|
{
|
||||||
if ($tablename == 'don') $total_ht_by_line=$element->amount;
|
if ($tablename == 'don') $total_ht_by_line=$element->amount;
|
||||||
elseif ($tablename == 'projet_task')
|
elseif ($tablename == 'projet_task')
|
||||||
{
|
{
|
||||||
$tmp = $element->getSumOfAmount($elementuser, $dates, $datee);
|
$tmp = $element->getSumOfAmount($elementuser, $dates, $datee); // $element is a task. $elementuser may be empty
|
||||||
$total_ht_by_line = price2num($tmp['amount'],'MT');
|
$total_ht_by_line = price2num($tmp['amount'],'MT');
|
||||||
|
if ($tmp['nblinesnull'] > 0)
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
$warning=$langs->trans("WarningSomeLinesWithNullHourlyRate");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -697,6 +706,7 @@ foreach ($listofreferent as $key => $value)
|
|||||||
if (! $qualifiedfortotal) print '<strike>';
|
if (! $qualifiedfortotal) print '<strike>';
|
||||||
print (isset($total_ht_by_line)?price($total_ht_by_line):' ');
|
print (isset($total_ht_by_line)?price($total_ht_by_line):' ');
|
||||||
if (! $qualifiedfortotal) print '</strike>';
|
if (! $qualifiedfortotal) print '</strike>';
|
||||||
|
if ($warning) print ' '.img_warning($warning);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
else print '<td></td>';
|
else print '<td></td>';
|
||||||
@ -718,13 +728,18 @@ foreach ($listofreferent as $key => $value)
|
|||||||
if (! $qualifiedfortotal) print '<strike>';
|
if (! $qualifiedfortotal) print '<strike>';
|
||||||
print (isset($total_ttc_by_line)?price($total_ttc_by_line):' ');
|
print (isset($total_ttc_by_line)?price($total_ttc_by_line):' ');
|
||||||
if (! $qualifiedfortotal) print '</strike>';
|
if (! $qualifiedfortotal) print '</strike>';
|
||||||
|
if ($warning) print ' '.img_warning($warning);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
else print '<td></td>';
|
else print '<td></td>';
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if ($element instanceof CommonInvoice)
|
if ($tablename == 'expensereport_det')
|
||||||
|
{
|
||||||
|
print $expensereport->getLibStatut(5);
|
||||||
|
}
|
||||||
|
else if ($element instanceof CommonInvoice)
|
||||||
{
|
{
|
||||||
//This applies for Facture and FactureFournisseur
|
//This applies for Facture and FactureFournisseur
|
||||||
print $element->getLibStatut(5, $element->getSommePaiement());
|
print $element->getLibStatut(5, $element->getSommePaiement());
|
||||||
@ -792,48 +807,11 @@ foreach ($listofreferent as $key => $value)
|
|||||||
print $elementarray;
|
print $elementarray;
|
||||||
}
|
}
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Barre d'action
|
|
||||||
*/
|
|
||||||
print '<div class="tabsAction">';
|
|
||||||
|
|
||||||
if ($object->statut > 0)
|
|
||||||
{
|
|
||||||
if ($object->thirdparty->prospect || $object->thirdparty->client)
|
|
||||||
{
|
|
||||||
if ($key == 'propal' && ! empty($conf->propal->enabled) && $user->rights->propale->creer)
|
|
||||||
{
|
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/comm/propal.php?socid='.$object->thirdparty->id.'&action=create&origin='.$object->element.'&originid='.$object->id.'">'.$langs->trans("AddProp").'</a>';
|
|
||||||
}
|
|
||||||
if ($key == 'order' && ! empty($conf->commande->enabled) && $user->rights->commande->creer)
|
|
||||||
{
|
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?socid='.$object->thirdparty->id.'&action=create&origin='.$object->element.'&originid='.$object->id.'">'.$langs->trans("AddCustomerOrder").'</a>';
|
|
||||||
}
|
|
||||||
if ($key == 'invoice' && ! empty($conf->facture->enabled) && $user->rights->facture->creer)
|
|
||||||
{
|
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture.php?socid='.$object->thirdparty->id.'&action=create&origin='.$object->element.'&originid='.$object->id.'">'.$langs->trans("AddCustomerInvoice").'</a>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($object->thirdparty->fournisseur)
|
|
||||||
{
|
|
||||||
if ($key == 'order_supplier' && ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->commande->creer)
|
|
||||||
{
|
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/card.php?socid='.$project->thirdparty->id.'&action=create&origin='.$project->element.'&originid='.$project->id.'">'.$langs->trans("AddSupplierOrder").'</a>';
|
|
||||||
}
|
|
||||||
if ($key == 'invoice_supplier' && ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->creer)
|
|
||||||
{
|
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fourn/facture/card.php?socid='.$project->thirdparty->id.'&action=create&origin='.$project->element.'&originid='.$project->id.'">'.$langs->trans("AddSupplierInvoice").'</a>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|||||||
@ -194,7 +194,7 @@ print '</td></tr></table>';
|
|||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr><tr>';
|
print '</tr><tr>';
|
||||||
#$urlwiki='http://wiki.dolibarr.org/index.php/List of Dolibarr partners and providers';
|
//$urlwiki='http://wiki.dolibarr.org/index.php/List of Dolibarr partners and providers';
|
||||||
$urlwiki='http://partners.dolibarr.org';
|
$urlwiki='http://partners.dolibarr.org';
|
||||||
print '<td align="center" valign="top">';
|
print '<td align="center" valign="top">';
|
||||||
print '<table class="nocellnopadd">';
|
print '<table class="nocellnopadd">';
|
||||||
@ -229,7 +229,7 @@ print '</td></tr></table>';
|
|||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr><tr>';
|
print '</tr><tr>';
|
||||||
#$urlwiki='http://wiki.dolibarr.org/index.php/List of Dolibarr partners and providers';
|
//$urlwiki='http://wiki.dolibarr.org/index.php/List of Dolibarr partners and providers';
|
||||||
$urlwiki='http://partners.dolibarr.org';
|
$urlwiki='http://partners.dolibarr.org';
|
||||||
print '<td align="center" valign="top">';
|
print '<td align="center" valign="top">';
|
||||||
print '<table class="nocellnopadd">';
|
print '<table class="nocellnopadd">';
|
||||||
|
|||||||
@ -2570,6 +2570,7 @@ div.dolgraph div.legend table tbody tr { height: auto; }
|
|||||||
.logo_setup
|
.logo_setup
|
||||||
{
|
{
|
||||||
content:url(<?php echo dol_buildpath($path.'/theme/'.$theme.'/img/logo_setup.svg',1) ?>);
|
content:url(<?php echo dol_buildpath($path.'/theme/'.$theme.'/img/logo_setup.svg',1) ?>);
|
||||||
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.titre {
|
div.titre {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user