mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Merge remote-tracking branch 'Dolibarr/10.0' into MissingHook
This commit is contained in:
commit
2e4db8c83c
|
|
@ -183,14 +183,14 @@ class Adherent extends CommonObject
|
|||
* @var integer
|
||||
*/
|
||||
public $datec;
|
||||
|
||||
|
||||
/**
|
||||
* Date modification record (tms)
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $datem;
|
||||
|
||||
|
||||
public $datevalid;
|
||||
|
||||
public $gender;
|
||||
|
|
@ -1268,7 +1268,7 @@ class Adherent extends CommonObject
|
|||
$this->ref = $obj->rowid;
|
||||
$this->id = $obj->rowid;
|
||||
$this->ref_ext = $obj->ref_ext;
|
||||
|
||||
|
||||
$this->civility_id = $obj->civility_code; // Bad. Kept for backard compatibility
|
||||
$this->civility_code = $obj->civility_code;
|
||||
$this->civility = $obj->civility_code?($langs->trans("Civility".$obj->civility_code) != ("Civility".$obj->civility_code) ? $langs->trans("Civility".$obj->civility_code) : $obj->civility_code):'';
|
||||
|
|
@ -2465,7 +2465,7 @@ class Adherent extends CommonObject
|
|||
*
|
||||
* @return array Tableau info des attributs
|
||||
*/
|
||||
private function _load_ldap_info()
|
||||
public function _load_ldap_info()
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf,$langs;
|
||||
|
|
|
|||
|
|
@ -418,7 +418,6 @@ if($action == 'edit') {
|
|||
print '<br></form>';
|
||||
} else {
|
||||
|
||||
// Boutons d'action
|
||||
print '<br><div class="tabsAction">';
|
||||
print '<a class="butAction" href="delais.php?action=edit">'.$langs->trans("Modify").'</a></div>';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -493,7 +493,8 @@ else
|
|||
}
|
||||
|
||||
|
||||
// Boutons actions
|
||||
// Buttons for actions
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>';
|
||||
|
|
|
|||
|
|
@ -415,7 +415,6 @@ if ($action == 'create')
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
// Boutons
|
||||
print '<div class="center">';
|
||||
print '<input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
|
||||
print ' ';
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ else
|
|||
print '</table>';
|
||||
|
||||
|
||||
// Boutons actions
|
||||
// Buttons for actions
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
|
|
|
|||
0
htdocs/bom/admin/index.html
Normal file
0
htdocs/bom/admin/index.html
Normal file
|
|
@ -173,7 +173,6 @@ if (empty($reshook))
|
|||
$action = '';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
0
htdocs/bom/class/index.html
Normal file
0
htdocs/bom/class/index.html
Normal file
0
htdocs/bom/index.html
Normal file
0
htdocs/bom/index.html
Normal file
0
htdocs/bom/lib/index.html
Normal file
0
htdocs/bom/lib/index.html
Normal file
|
|
@ -320,7 +320,7 @@ p.titre {
|
|||
padding: 2px 2px;
|
||||
}
|
||||
|
||||
/* -------------- Boutons --------------------- */
|
||||
/* -------------- Buttons for SimplePOS --------------------- */
|
||||
.bouton_ajout_article {
|
||||
margin-top: 10px;
|
||||
width: 60%;
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
|
|||
// Load translation files required by the page
|
||||
$langs->load("propal");
|
||||
|
||||
$linkedObjectBlock = dol_sort_array($linkedObjectBlock, 'date', 'desc');
|
||||
|
||||
$total=0; $ilink=0;
|
||||
foreach($linkedObjectBlock as $key => $objectlink)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
|
|||
// Load translation files required by the page
|
||||
$langs->load("orders");
|
||||
|
||||
$linkedObjectBlock = dol_sort_array($linkedObjectBlock, 'date', 'desc');
|
||||
|
||||
$total=0; $ilink=0;
|
||||
foreach($linkedObjectBlock as $key => $objectlink)
|
||||
{
|
||||
|
|
|
|||
526
htdocs/compta/accounting-files.php
Normal file
526
htdocs/compta/accounting-files.php
Normal file
|
|
@ -0,0 +1,526 @@
|
|||
<?php
|
||||
/* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2019 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2017 Pierre-Henry Favre <support@atm-consulting.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/**
|
||||
* \file htdocs/compta/accounting-files.php
|
||||
* \ingroup compta
|
||||
* \brief Page to show portoflio and files of a thirdparty and download it
|
||||
*/
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||
|
||||
$langs->loadLangs(array("accountancy", "bills", "companies", "salaries"));
|
||||
|
||||
$date_start =GETPOST('date_start', 'alpha');
|
||||
$date_startDay= GETPOST('date_startday', 'int');
|
||||
$date_startMonth= GETPOST('date_startmonth', 'int');
|
||||
$date_startYear= GETPOST('date_startyear', 'int');
|
||||
$date_start=($date_startDay)?dol_mktime(0, 0, 0, $date_startMonth, $date_startDay, $date_startYear):strtotime($date_start);
|
||||
$date_stop =GETPOST('date_stop', 'alpha');
|
||||
$date_stopDay= GETPOST('date_stopday', 'int');
|
||||
$date_stopMonth= GETPOST('date_stopmonth', 'int');
|
||||
$date_stopYear= GETPOST('date_stopyear', 'int');
|
||||
//FIXME doldate
|
||||
$date_stop=($date_stopDay)?dol_mktime(23, 59, 59, $date_stopMonth, $date_stopDay, $date_stopYear):strtotime($date_stop);
|
||||
$action =GETPOST('action', 'alpha');
|
||||
|
||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('comptafileslist','globallist'));
|
||||
|
||||
// Load variable for pagination
|
||||
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
|
||||
$sortfield = GETPOST('sortfield', 'alpha');
|
||||
$sortorder = GETPOST('sortorder', 'alpha');
|
||||
$page = GETPOST('page', 'int');
|
||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||
$offset = $limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
if (! $sortfield) $sortfield="date,item"; // Set here default search field
|
||||
if (! $sortorder) $sortorder="DESC";
|
||||
|
||||
|
||||
$arrayfields=array(
|
||||
'type'=>array('label'=>"Type", 'checked'=>1),
|
||||
'date'=>array('label'=>"Date", 'checked'=>1),
|
||||
//...
|
||||
);
|
||||
|
||||
// Security check
|
||||
if (empty($conf->comptabilite->enabled) && empty($conf->accounting->enabled)) {
|
||||
accessforbidden();
|
||||
}
|
||||
if ($user->societe_id > 0) {
|
||||
accessforbidden();
|
||||
}
|
||||
|
||||
$entity = GETPOST('entity', 'int')?GETPOST('entity', 'int'):$conf->entity;
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
|
||||
//$parameters = array('socid' => $id);
|
||||
//$reshook = $hookmanager->executeHooks('doActions', $parameters, $object); // Note that $object may have been modified by some hooks
|
||||
//if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
|
||||
$filesarray=array();
|
||||
$result=false;
|
||||
if (($action=="searchfiles" || $action=="dl" )) {
|
||||
|
||||
if (empty($date_start))
|
||||
{
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("DateStart")), null, 'errors');
|
||||
$error++;
|
||||
}
|
||||
if (empty($date_stop))
|
||||
{
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("DateEnd")), null, 'errors');
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$wheretail=" '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
|
||||
|
||||
$sql="SELECT t.rowid as id, t.ref, t.paye as paid, total as total_ht, total_ttc, tva as total_vat, fk_soc, t.datef as date, 'Invoice' as item, s.nom as thirdparty_name, s.code_client as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."facture as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
|
||||
$sql.=" WHERE datef between ".$wheretail;
|
||||
$sql.=" AND t.entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND t.fk_statut <> ".Facture::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT t.rowid as id, t.ref, paye as paid, total_ht, total_ttc, total_tva as total_vat, fk_soc, datef as date, 'SupplierInvoice' as item, s.nom as thirdparty_name, s.code_fournisseur as thirdparty_code, c.code as country_code, s.tva_intra as vatnum";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."facture_fourn as t LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = t.fk_soc LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays";
|
||||
$sql.=" WHERE datef between ".$wheretail;
|
||||
$sql.=" AND t.entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT t.rowid as id, t.ref, paid, total_ht, total_ttc, total_tva as total_vat, fk_user_author as fk_soc, date_fin as date, 'ExpenseReport' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."expensereport as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user_author LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
|
||||
$sql.=" WHERE date_fin between ".$wheretail;
|
||||
$sql.=" AND t.entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND t.fk_statut <> ".ExpenseReport::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT t.rowid as id, t.ref, paid, amount as total_ht, amount as total_ttc, 0 as total_vat, 0 as fk_soc, datedon as date, 'Donation' as item, t.societe as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."don as t LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = t.fk_country";
|
||||
$sql.=" WHERE datedon between ".$wheretail;
|
||||
$sql.=" AND t.entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND t.fk_statut <> ".Don::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT t.rowid as id, t.label as ref, 1 as paid, amount as total_ht, amount as total_ttc, 0 as total_vat, t.fk_user as fk_soc, datep as date, 'SalaryPayment' as item, CONCAT(CONCAT(u.lastname, ' '), u.firstname) as thirdparty_name, '' as thirdparty_code, c.code as country_code, '' as vatnum";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."payment_salary as t LEFT JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid = t.fk_user LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = u.fk_country";
|
||||
$sql.=" WHERE datep between ".$wheretail;
|
||||
$sql.=" AND t.entity IN (".($entity==1?'0,1':$entity).')';
|
||||
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT t.rowid as id, t.libelle as ref, paye as paid, amount as total_ht, amount as total_ttc, 0 as total_tva, 0 as fk_soc, date_creation as date, 'SocialContributions' as item, '' as thirdparty_name, '' as thirdparty_code, '' as country_code, '' as vatnum";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."chargesociales as t";
|
||||
$sql.=" WHERE date_creation between ".$wheretail;
|
||||
$sql.=" AND t.entity IN (".($entity==1?'0,1':$entity).')';
|
||||
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT;
|
||||
$sql.= $db->order($sortfield, $sortorder);
|
||||
//print $sql;
|
||||
|
||||
$resd = $db->query($sql);
|
||||
$files=array();
|
||||
$link='';
|
||||
|
||||
if ($resd)
|
||||
{
|
||||
$numd = $db->num_rows($resd);
|
||||
|
||||
$tmpinvoice=new Facture($db);
|
||||
$tmpinvoicesupplier=new FactureFournisseur($db);
|
||||
$tmpdonation=new Don($db);
|
||||
|
||||
$upload_dir ='';
|
||||
$i=0;
|
||||
while ($i < $numd)
|
||||
{
|
||||
$objd = $db->fetch_object($resd);
|
||||
|
||||
switch($objd->item)
|
||||
{
|
||||
case "Invoice":
|
||||
$subdir = '';
|
||||
$subdir.=($subdir ? '/' : '').dol_sanitizeFileName($objd->ref);
|
||||
$upload_dir = $conf->facture->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=facture&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "SupplierInvoice":
|
||||
$tmpinvoicesupplier->fetch($objd->id);
|
||||
$subdir = get_exdir($tmpinvoicesupplier->id, 2, 0, 1, $tmpinvoicesupplier, 'invoice_supplier'); // TODO Use first file
|
||||
$subdir.=($subdir ? '/' : '').dol_sanitizeFileName($objd->ref);
|
||||
$upload_dir = $conf->fournisseur->facture->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=facture_fournisseur&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "ExpenseReport":
|
||||
$subdir = '';
|
||||
$subdir.=($subdir ? '/' : '').dol_sanitizeFileName($objd->ref);
|
||||
$upload_dir = $conf->expensereport->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=expensereport&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "SalaryPayment":
|
||||
$subdir = '';
|
||||
$subdir.=($subdir ? '/' : '').dol_sanitizeFileName($objd->id);
|
||||
$upload_dir = $conf->salaries->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=salaries&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "Donation":
|
||||
$tmpdonation->fetch($objp->id);
|
||||
$subdir=get_exdir(0, 0, 0, 0, $tmpdonation, 'donation');
|
||||
$subdir.=($subdir ? '/' : '').dol_sanitizeFileName($objd->id);
|
||||
$upload_dir = $conf->don->dir_output . '/' . $subdir;
|
||||
$link="document.php?modulepart=don&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "SocialContributions":
|
||||
$subdir = '';
|
||||
$subdir.=($subdir ? '/' : '').dol_sanitizeFileName($objd->id);
|
||||
$upload_dir = $conf->tax->dir_output . '/' . $subdir;
|
||||
$link="document.php?modulepart=tax&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
default:
|
||||
$subdir='';
|
||||
$upload_dir='';
|
||||
$link='';
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($upload_dir))
|
||||
{
|
||||
$result=true;
|
||||
$files=dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview\.png)$', '', SORT_ASC, 1);
|
||||
//var_dump($upload_dir);
|
||||
if (count($files) < 1)
|
||||
{
|
||||
$nofile['id']=$objd->id;
|
||||
$nofile['date']=$db->idate($objd->date);
|
||||
$nofile['paid']=$objd->paid;
|
||||
$nofile['amount_ht']=$objd->total_ht;
|
||||
$nofile['amount_ttc']=$objd->total_ttc;
|
||||
$nofile['amount_vat']=$objd->total_vat;
|
||||
$nofile['ref']=($objd->ref ? $objd->ref : $objd->id);
|
||||
$nofile['fk']=$objd->fk_soc;
|
||||
$nofile['item']=$objd->item;
|
||||
$nofile['thirdparty_name']=$objd->thirdparty_name;
|
||||
$nofile['thirdparty_code']=$objd->thirdparty_code;
|
||||
$nofile['country_code']=$objd->country_code;
|
||||
$nofile['vatnum']=$objd->vatnum;
|
||||
|
||||
$filesarray[]=$nofile;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($files as $key => $file)
|
||||
{
|
||||
$file['id']=$objd->id;
|
||||
$file['date']=$db->idate($objd->date);
|
||||
$file['paid']=$objd->paid;
|
||||
$file['amount_ht']=$objd->total_ht;
|
||||
$file['amount_ttc']=$objd->total_ttc;
|
||||
$file['amount_vat']=$objd->total_vat;
|
||||
$file['ref']=($objd->ref ? $objd->ref : $objd->id);
|
||||
$file['fk']=$objd->fk_soc;
|
||||
$file['item']=$objd->item;
|
||||
|
||||
$file['thirdparty_name']=$objd->thirdparty_name;
|
||||
$file['thirdparty_code']=$objd->thirdparty_code;
|
||||
$file['country_code']=$objd->country_code;
|
||||
$file['vatnum']=$objd->vatnum;
|
||||
|
||||
$file['link']=$link.$file['name'];
|
||||
$file['relpathnamelang'] = $langs->trans($file['item']).'/'.$file['name'];
|
||||
|
||||
$filesarray[]=$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
$db->free($resd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*ZIP creation
|
||||
*/
|
||||
|
||||
$dirfortmpfile = ($conf->accounting->dir_temp ? $conf->accounting->dir_temp : $conf->comptabilite->dir_temp);
|
||||
if (empty($dirfortmpfile))
|
||||
{
|
||||
setEventMessages($langs->trans("ErrorNoAccountingModuleEnabled"), null, 'errors');
|
||||
$error++;
|
||||
}
|
||||
|
||||
|
||||
if ($result && $action == "dl" && ! $error)
|
||||
{
|
||||
if (! extension_loaded('zip'))
|
||||
{
|
||||
setEventMessages('PHPZIPExtentionNotLoaded', null, 'errors');
|
||||
exit;
|
||||
}
|
||||
|
||||
dol_mkdir($dirfortmpfile);
|
||||
|
||||
$log=$langs->transnoentitiesnoconv("Type").','.$langs->transnoentitiesnoconv("Date").','.$langs->transnoentitiesnoconv("Ref").','.$langs->transnoentitiesnoconv("TotalHT").','.$langs->transnoentitiesnoconv("TotalTTC").','.$langs->transnoentitiesnoconv("TotalVAT").','.$langs->transnoentitiesnoconv("Paid").',filename,item_id,'.$langs->transnoentitiesnoconv("ThirdParty").','.$langs->transnoentitiesnoconv("Code").','.$langs->transnoentitiesnoconv("Country").','.$langs->transnoentitiesnoconv("VATIntra")."\n";
|
||||
$zipname = $dirfortmpfile.'/'.dol_print_date($date_start, 'dayrfc')."-".dol_print_date($date_stop, 'dayrfc').'_export.zip';
|
||||
|
||||
dol_delete_file($zipname);
|
||||
|
||||
$zip = new ZipArchive;
|
||||
$res = $zip->open($zipname, ZipArchive::OVERWRITE|ZipArchive::CREATE);
|
||||
if ($res)
|
||||
{
|
||||
foreach ($filesarray as $key => $file)
|
||||
{
|
||||
if (file_exists($file["fullname"])) $zip->addFile($file["fullname"], $file["relpathnamelang"]); //
|
||||
$log.=$file['item'].','.dol_print_date($file['date'], 'dayrfc').','.$file['ref'].','.$file['amount_ht'].','.$file['amount_ttc'].','.$file['amount_vat'].','.$file['paid'].','.$file["name"].','.$file['fk'].','.$file['thirdparty_name'].','.$file['thirdparty_code'].','.$file['country_code'].',"'.$file['vatnum'].'"'."\n";
|
||||
}
|
||||
$zip->addFromString('transactions.csv', $log);
|
||||
$zip->close();
|
||||
|
||||
///Then download the zipped file.
|
||||
header('Content-Type: application/zip');
|
||||
header('Content-disposition: attachment; filename='.basename($zipname));
|
||||
header('Content-Length: ' . filesize($zipname));
|
||||
readfile($zipname);
|
||||
|
||||
dol_delete_file($zipname);
|
||||
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
setEventMessages($langs->trans("FailedToOpenFile", $zipname), null, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
$form = new Form($db);
|
||||
$userstatic=new User($db);
|
||||
|
||||
$title=$langs->trans("ComptaFiles").' - '.$langs->trans("List");
|
||||
|
||||
llxHeader('', $title, $help_url);
|
||||
|
||||
$h=0;
|
||||
$head[$h][0] = $_SERVER["PHP_SELF"].$varlink;
|
||||
$head[$h][1] = $langs->trans("AccountantFiles");
|
||||
$head[$h][2] = 'AccountancyFiles';
|
||||
|
||||
dol_fiche_head($head, 'AccountancyFiles');
|
||||
|
||||
|
||||
print '<form name="searchfiles" action="?action=searchfiles'.$tail.'" method="POST" >'."\n";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print $langs->trans("ReportPeriod").': '.$form->selectDate($date_start, 'date_start', 0, 0, 0, "", 1, 1, 0);
|
||||
print ' - '.$form->selectDate($date_stop, 'date_stop', 0, 0, 0, "", 1, 1, 0)."\n</a>";
|
||||
|
||||
// Export is for current company only !
|
||||
if (! empty($conf->multicompany->enabled) && is_object($mc))
|
||||
{
|
||||
print '<span class="marginleftonly marginrightonly">('.$langs->trans("Entity").' : ';
|
||||
$mc->dao->getEntities();
|
||||
$mc->dao->fetch($conf->entity);
|
||||
print $mc->dao->label;
|
||||
print ")</span>\n";
|
||||
}
|
||||
|
||||
print '<input class="button" type="submit" name="search" value="'.$langs->trans("Search").'">';
|
||||
|
||||
print '</form>'."\n";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
if (!empty($date_start) && !empty($date_stop))
|
||||
{
|
||||
$param='action=searchfiles';
|
||||
$param.='&date_startday='.GETPOST('date_startday', 'int');
|
||||
$param.='&date_startmonth='.GETPOST('date_startmonth', 'int');
|
||||
$param.='&date_startyear='.GETPOST('date_startyear', 'int');
|
||||
$param.='&date_stopday='.GETPOST('date_stopday', 'int');
|
||||
$param.='&date_stopmonth='.GETPOST('date_stopmonth', 'int');
|
||||
$param.='&date_stopyear='.GETPOST('date_stopyear', 'int');
|
||||
|
||||
print '<form name="dl" action="?action=dl" method="POST" >'."\n";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
|
||||
echo dol_print_date($date_start, 'day')." - ".dol_print_date($date_stop, 'day');
|
||||
|
||||
print '<input type="hidden" name="date_start" value="'.dol_print_date($date_start, 'dayxcard').'" />';
|
||||
print '<input type="hidden" name="date_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />';
|
||||
|
||||
//print '<input type="hidden" name="date_stopDay" value="'.dol_print_date($date_stop, '%d').'" />';
|
||||
//print '<input type="hidden" name="date_stopMonth" value="'.dol_print_date($date_stop, '%m').'" />';
|
||||
//print '<input type="hidden" name="date_stopYear" value="'.dol_print_date($date_stop, '%Y').'" />';
|
||||
|
||||
//print '<input type="hidden" name="date_startDay" value="'.dol_print_date($date_start, '%d').'" />';
|
||||
//print '<input type="hidden" name="date_startMonth" value="'.dol_print_date($date_start, '%m').'" />';
|
||||
//print '<input type="hidden" name="date_startYear" value="'.dol_print_date($date_start, '%m').'" />';
|
||||
|
||||
print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />';
|
||||
print '</form>'."\n";
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre($arrayfields['type']['label'], $_SERVER["PHP_SELF"], "type", "", $param, '', $sortfield, $sortorder, 'nowrap ');
|
||||
print_liste_field_titre($arrayfields['date']['label'], $_SERVER["PHP_SELF"], "date", "", $param, '', $sortfield, $sortorder, 'center nowrap ');
|
||||
print '<td>'.$langs->trans("Ref").'</td>';
|
||||
print '<td>'.$langs->trans("Document").'</td>';
|
||||
print '<td>'.$langs->trans("Paid").'</td>';
|
||||
print '<td align="right">'.$langs->trans("TotalHT").'</td>';
|
||||
print '<td align="right">'.$langs->trans("TotalTTC").'</td>';
|
||||
print '<td align="right">'.$langs->trans("TotalVAT").'</td>';
|
||||
print '<td>'.$langs->trans("ThirdParty").'</td>';
|
||||
print '<td class="center">'.$langs->trans("Code").'</td>';
|
||||
print '<td class="center">'.$langs->trans("Country").'</td>';
|
||||
print '<td class="center">'.$langs->trans("VATIntra").'</td>';
|
||||
print '</tr>';
|
||||
if ($result)
|
||||
{
|
||||
$TData = dol_sort_array($filesarray, 'date', 'ASC');
|
||||
|
||||
if (empty($TData))
|
||||
{
|
||||
print '<tr class="oddeven"><td colspan="7">'.$langs->trans("NoItem").'</td></tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sort array by date ASC to calculate balance
|
||||
|
||||
$totalET = 0;
|
||||
$totalIT = 0;
|
||||
$totalVAT = 0;
|
||||
$totalDebit = 0;
|
||||
$totalCredit = 0;
|
||||
|
||||
// Display array
|
||||
foreach($TData as $data)
|
||||
{
|
||||
$html_class = '';
|
||||
//if (!empty($data['fk_facture'])) $html_class = 'facid-'.$data['fk_facture'];
|
||||
//elseif (!empty($data['fk_paiement'])) $html_class = 'payid-'.$data['fk_paiement'];
|
||||
print '<tr class="oddeven '.$html_class.'">';
|
||||
|
||||
// Type
|
||||
print '<td>'.$langs->trans($data['item']).'</td>';
|
||||
|
||||
// Date
|
||||
print '<td class="center">';
|
||||
print dol_print_date($data['date'], 'day');
|
||||
print "</td>\n";
|
||||
|
||||
// Ref
|
||||
print '<td aling="left">'.$data['ref'].'</td>';
|
||||
|
||||
// File link
|
||||
print '<td>';
|
||||
if ($data['link'])
|
||||
{
|
||||
print '<a href='.DOL_URL_ROOT.'/'.$data['link'].' target="_blank">'.($data['name'] ? $data['name'] : $data['ref']).'</a>';
|
||||
}
|
||||
print "</td>\n";
|
||||
|
||||
// Paid
|
||||
print '<td aling="left">'.$data['paid'].'</td>';
|
||||
|
||||
// Total ET
|
||||
print '<td align="right">'.price($data['amount_ht'])."</td>\n";
|
||||
// Total IT
|
||||
print '<td align="right">'.price($data['amount_ttc'])."</td>\n";
|
||||
// Total VAT
|
||||
print '<td align="right">'.price($data['amount_vat'])."</td>\n";
|
||||
|
||||
print '<td>'.$data['thirdparty_name']."</td>\n";
|
||||
|
||||
print '<td class="center">'.$data['thirdparty_code']."</td>\n";
|
||||
|
||||
print '<td class="center">'.$data['country_code']."</td>\n";
|
||||
|
||||
print '<td align="right">'.$data['vatnum']."</td>\n";
|
||||
|
||||
// Debit
|
||||
//print '<td align="right">'.(($data['amount_ttc'] > 0) ? price(abs($data['amount_ttc'])) : '')."</td>\n";
|
||||
// Credit
|
||||
//print '<td align="right">'.(($data['amount_ttc'] > 0) ? '' : price(abs($data['amount_ttc'])))."</td>\n";
|
||||
|
||||
$totalET += $data['amount_ht'];
|
||||
$totalIT += $data['amount_ttc'];
|
||||
$totalVAT += $data['amount_vat'];
|
||||
|
||||
$totalDebit += ($data['amount_ttc'] > 0) ? abs($data['amount_ttc']) : 0;
|
||||
$totalCredit += ($data['amount_ttc'] > 0) ? 0 : abs($data['amount_ttc']);
|
||||
|
||||
// Balance
|
||||
//print '<td align="right">'.price($data['balance'])."</td>\n";
|
||||
|
||||
print "</tr>\n";
|
||||
}
|
||||
|
||||
print '<tr class="liste_total">';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td align="right">'.price($totalET).'</td>';
|
||||
print '<td align="right">'.price($totalIT).'</td>';
|
||||
print '<td align="right">'.price($totalVAT).'</td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
/*print '<td align="right">'.price($totalDebit).'</td>';
|
||||
print '<td align="right">'.price($totalCredit).'</td>';
|
||||
print '<td align="right">'.price(price2num($totalDebit - $totalCredit, 'MT')).'</td>';
|
||||
*/
|
||||
print "</tr>\n";
|
||||
}
|
||||
}
|
||||
print "</table>";
|
||||
print '</div>';
|
||||
}
|
||||
|
||||
|
||||
llxFooter();
|
||||
$db->close();
|
||||
|
|
@ -1,454 +0,0 @@
|
|||
<?php
|
||||
/* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2017 Pierre-Henry Favre <support@atm-consulting.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/**
|
||||
* \file htdocs/compta/compta-files.php
|
||||
* \ingroup compta
|
||||
* \brief Page to show portoflio and files of a thirdparty and download it
|
||||
*/
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||
|
||||
$langs->loadLangs(array("accountancy", "bills", "companies"));
|
||||
|
||||
$date_start =GETPOST('date_start', 'alpha');
|
||||
$date_startDay= GETPOST('date_startday', 'int');
|
||||
$date_startMonth= GETPOST('date_startmonth', 'int');
|
||||
$date_startYear= GETPOST('date_startyear', 'int');
|
||||
$date_start=($date_startDay)?dol_mktime(0, 0, 0, $date_startMonth, $date_startDay, $date_startYear):strtotime($date_start);
|
||||
$date_stop =GETPOST('date_stop', 'alpha');
|
||||
$date_stopDay= GETPOST('date_stopday', 'int');
|
||||
$date_stopMonth= GETPOST('date_stopmonth', 'int');
|
||||
$date_stopYear= GETPOST('date_stopyear', 'int');
|
||||
//FIXME doldate
|
||||
$date_stop=($date_stopDay)?dol_mktime(0, 0, 0, $date_stopMonth, $date_stopDay, $date_stopYear):strtotime($date_stop);
|
||||
$action =GETPOST('action', 'alpha');
|
||||
|
||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('comptafileslist', 'globallist'));
|
||||
|
||||
// Load variable for pagination
|
||||
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
|
||||
$sortfield = GETPOST('sortfield', 'alpha');
|
||||
$sortorder = GETPOST('sortorder', 'alpha');
|
||||
$page = GETPOST('page', 'int');
|
||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||
$offset = $limit * $page;
|
||||
$pageprev = $page - 1;
|
||||
$pagenext = $page + 1;
|
||||
if (! $sortfield) $sortfield="date,item"; // Set here default search field
|
||||
if (! $sortorder) $sortorder="DESC";
|
||||
|
||||
|
||||
$arrayfields=array(
|
||||
'date'=>array('label'=>"Date", 'checked'=>1),
|
||||
//...
|
||||
);
|
||||
|
||||
// Security check
|
||||
if (empty($conf->comptabilite->enabled) && empty($conf->accounting->enabled)) {
|
||||
accessforbidden();
|
||||
}
|
||||
if ($user->societe_id > 0)
|
||||
accessforbidden();
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
$entity = GETPOST('entity', 'int')?GETPOST('entity', 'int'):$conf->entity;
|
||||
|
||||
//$parameters = array('socid' => $id);
|
||||
//$reshook = $hookmanager->executeHooks('doActions', $parameters, $object); // Note that $object may have been modified by some hooks
|
||||
//if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
|
||||
$filesarray=array();
|
||||
$result=false;
|
||||
if(($action=="searchfiles" || $action=="dl" ) && $date_start && $date_stop) {
|
||||
$wheretail=" '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
|
||||
$sql="SELECT rowid as id, ref as ref, paye as paid, total_ttc, fk_soc, datef as date, 'Invoice' as item FROM ".MAIN_DB_PREFIX."facture";
|
||||
$sql.=" WHERE datef between ".$wheretail;
|
||||
$sql.=" AND entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND fk_statut <> ".Facture::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT rowid as id, ref, paye as paid, total_ttc, fk_soc, datef as date, 'SupplierInvoice' as item FROM ".MAIN_DB_PREFIX."facture_fourn";
|
||||
$sql.=" WHERE datef between ".$wheretail;
|
||||
$sql.=" AND entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND fk_statut <> ".FactureFournisseur::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT rowid as id, ref, paid, total_ttc, fk_user_author as fk_soc, date_fin as date, 'ExpenseReport' as item FROM ".MAIN_DB_PREFIX."expensereport";
|
||||
$sql.=" WHERE date_fin between ".$wheretail;
|
||||
$sql.=" AND entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND fk_statut <> ".ExpenseReport::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT rowid as id, ref,paid,amount as total_ttc, '0' as fk_soc, datedon as date, 'Donation' as item FROM ".MAIN_DB_PREFIX."don";
|
||||
$sql.=" WHERE datedon between ".$wheretail;
|
||||
$sql.=" AND entity IN (".($entity==1?'0,1':$entity).')';
|
||||
$sql.=" AND fk_statut <> ".Don::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT rowid as id, label as ref, 1 as paid, amount as total_ttc, fk_user as fk_soc,datep as date, 'SalaryPayment' as item FROM ".MAIN_DB_PREFIX."payment_salary";
|
||||
$sql.=" WHERE datep between ".$wheretail;
|
||||
$sql.=" AND entity IN (".($entity==1?'0,1':$entity).')';
|
||||
//$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT;
|
||||
$sql.=" UNION ALL";
|
||||
$sql.=" SELECT rowid as id, libelle as ref, paye as paid, amount as total_ttc, 0 as fk_soc, date_creation as date, 'SocialContributions' as item FROM ".MAIN_DB_PREFIX."chargesociales";
|
||||
$sql.=" WHERE date_creation between ".$wheretail;
|
||||
$sql.=" AND entity IN (".($entity==1?'0,1':$entity).')';
|
||||
//$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT;
|
||||
$sql.= $db->order($sortfield, $sortorder);
|
||||
|
||||
$resd = $db->query($sql);
|
||||
$files=array();
|
||||
$link='';
|
||||
|
||||
if ($resd)
|
||||
{
|
||||
$numd = $db->num_rows($resd);
|
||||
|
||||
$tmpinvoice=new Facture($db);
|
||||
$tmpinvoicesupplier=new FactureFournisseur($db);
|
||||
$tmpdonation=new Don($db);
|
||||
|
||||
$upload_dir ='';
|
||||
$i=0;
|
||||
while ($i < $numd)
|
||||
{
|
||||
$objd = $db->fetch_object($resd);
|
||||
|
||||
switch($objd->item)
|
||||
{
|
||||
case "Invoice":
|
||||
$subdir=dol_sanitizeFileName($objd->ref);
|
||||
$upload_dir = $conf->facture->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=facture&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "SupplierInvoice":
|
||||
$tmpinvoicesupplier->fetch($objd->id);
|
||||
$subdir=get_exdir($tmpinvoicesupplier->id, 2, 0, 0, $tmpinvoicesupplier, 'invoice_supplier').'/'.dol_sanitizeFileName($objd->ref);
|
||||
$upload_dir = $conf->fournisseur->facture->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=facture_fournisseur&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "ExpenseReport":
|
||||
$subdir=dol_sanitizeFileName($objd->ref);
|
||||
$upload_dir = $conf->expensereport->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=expensereport&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "SalaryPayment":
|
||||
$subdir=dol_sanitizeFileName($objd->id);
|
||||
$upload_dir = $conf->salaries->dir_output.'/'.$subdir;
|
||||
$link="document.php?modulepart=salaries&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "Donation":
|
||||
$tmpdonation->fetch($objp->id);
|
||||
$subdir=get_exdir(0, 0, 0, 1, $tmpdonation, 'donation'). '/'. dol_sanitizeFileName($objd->id);
|
||||
$upload_dir = $conf->don->dir_output . '/' . $subdir;
|
||||
$link="document.php?modulepart=don&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
case "SocialContributions":
|
||||
$subdir=dol_sanitizeFileName($objd->id);
|
||||
$upload_dir = $conf->tax->dir_output . '/' . $subdir;
|
||||
$link="document.php?modulepart=tax&file=".str_replace('/', '%2F', $subdir).'%2F';
|
||||
break;
|
||||
default:
|
||||
$subdir='';
|
||||
$upload_dir='';
|
||||
$link='';
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($upload_dir))
|
||||
{
|
||||
$result=true;
|
||||
$files=dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview\.png)$', '', SORT_ASC, 1);
|
||||
//var_dump($upload_dir);
|
||||
if (count($files) < 1)
|
||||
{
|
||||
$nofile['id']=$objd->id;
|
||||
$nofile['date']=$db->idate($objd->date);
|
||||
$nofile['paid']=$objd->paid;
|
||||
$nofile['amount']=$objd->total_ttc;
|
||||
$nofile['ref']=$objd->ref;
|
||||
$nofile['fk']=$objd->fk_soc;
|
||||
$nofile['item']=$objd->item;
|
||||
|
||||
$filesarray[]=$nofile;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($files as $key => $file)
|
||||
{
|
||||
$file['id']=$objd->id;
|
||||
$file['date']=$db->idate($objd->date);
|
||||
$file['paid']=$objd->paid;
|
||||
$file['amount']=$objd->total_ttc;
|
||||
$file['ref']=$objd->ref;
|
||||
$file['fk']=$objd->fk_soc;
|
||||
$file['item']=$objd->item;
|
||||
$file['link']=$link.$file['name'];
|
||||
$file['relpathnamelang'] = $langs->trans($file['item']).'/'.$file['name'];
|
||||
|
||||
$filesarray[]=$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
$db->free($resd);
|
||||
}
|
||||
|
||||
/*
|
||||
* cleanup of old ZIP
|
||||
*/
|
||||
//FIXME
|
||||
/*
|
||||
*ZIP creation
|
||||
*/
|
||||
|
||||
if ($result && $action == "dl")
|
||||
{
|
||||
if (! extension_loaded('zip'))
|
||||
{
|
||||
setEventMessages('PHPZIPExtentionNotLoaded', null, 'errors');
|
||||
exit;
|
||||
}
|
||||
|
||||
$dirfortmpfile = ($conf->accounting->dir_temp ? $conf->accounting->dir_temp : $conf->compta->dir_temp);
|
||||
|
||||
dol_mkdir($dirfortmpfile);
|
||||
|
||||
$log='date,type,ref,total,paid,filename,item_id'."\n";
|
||||
$zipname = $dirfortmpfile.'/'.dol_print_date($date_start, 'dayrfc')."-".dol_print_date($date_stop, 'dayrfc').'_export.zip';
|
||||
|
||||
dol_delete_file($zipname);
|
||||
|
||||
$zip = new ZipArchive;
|
||||
$res = $zip->open($zipname, ZipArchive::OVERWRITE|ZipArchive::CREATE);
|
||||
if ($res)
|
||||
{
|
||||
foreach ($filesarray as $key=> $file)
|
||||
{
|
||||
if (file_exists($file["fullname"])) $zip->addFile($file["fullname"], $file["relpathnamelang"]); //
|
||||
$log.=dol_print_date($file['date'], 'dayrfc').','.$file['item'].','.$file['ref'].','.$file['amount'].','.$file['paid'].','.$file["name"].','.$file['fk']."\n";
|
||||
}
|
||||
$zip->addFromString('transactions.csv', $log);
|
||||
$zip->close();
|
||||
|
||||
///Then download the zipped file.
|
||||
header('Content-Type: application/zip');
|
||||
header('Content-disposition: attachment; filename='.basename($zipname));
|
||||
header('Content-Length: ' . filesize($zipname));
|
||||
readfile($zipname);
|
||||
|
||||
dol_delete_file($zipname);
|
||||
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
$form = new Form($db);
|
||||
$userstatic=new User($db);
|
||||
|
||||
$title=$langs->trans("ComptaFiles").' - '.$langs->trans("List");
|
||||
|
||||
llxHeader('', $title, $help_url);
|
||||
|
||||
$h=0;
|
||||
$head[$h][0] = $_SERVER["PHP_SELF"].$varlink;
|
||||
$head[$h][1] = $langs->trans("AccountantFiles");
|
||||
$head[$h][2] = 'AccountancyFiles';
|
||||
|
||||
dol_fiche_head($head, 'AccountancyFiles');
|
||||
|
||||
|
||||
print '<form name="searchfiles" action="?action=searchfiles'.$tail.'" method="POST" >'."\n";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print $langs->trans("ReportPeriod").': '.$form->selectDate($date_start, 'date_start', 0, 0, 0, "", 1, 1, 0);
|
||||
print ' - '.$form->selectDate($date_stop, 'date_stop', 0, 0, 0, "", 1, 1, 0)."\n</a>";
|
||||
// Multicompany
|
||||
/*if (! empty($conf->multicompany->enabled) && is_object($mc))
|
||||
{
|
||||
print '<br>';
|
||||
// This is now done with hook formObjectOptions. Keep this code for backward compatibility with old multicompany module
|
||||
if (method_exists($mc, 'formObjectOptions'))
|
||||
{
|
||||
if (empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) && $conf->entity == 1 && $user->admin && ! $user->entity) // condition must be same for create and edit mode
|
||||
{
|
||||
print "<tr>".'<td>'.$langs->trans("Entity").'</td>';
|
||||
print "<td>".$mc->select_entities($entity);
|
||||
print "</td></tr>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<input type="hidden" name="entity" value="'.$conf->entity.'" />';
|
||||
}
|
||||
}
|
||||
|
||||
$object = new stdClass();
|
||||
// Other attributes
|
||||
$parameters=array('objectsrc' => null, 'colspan' => ' colspan="3"');
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
if (empty($reshook))
|
||||
{
|
||||
print $object->showOptionals($extrafields, 'edit');
|
||||
}
|
||||
}*/
|
||||
if (! empty($conf->multicompany->enabled) && is_object($mc))
|
||||
{
|
||||
print ' - '.$langs->trans("Entity").' : ';
|
||||
$mc->dao->getEntities();
|
||||
$mc->dao->fetch($conf->entity);
|
||||
print $mc->dao->label;
|
||||
print "<br>\n";
|
||||
}
|
||||
|
||||
print '<input class="button" type="submit" value="'.$langs->trans("Refresh").'" /></form>'."\n";
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
if (!empty($date_start) && !empty($date_stop))
|
||||
{
|
||||
$param='action=searchfiles';
|
||||
$param.='&date_startday='.GETPOST('date_startday', 'int');
|
||||
$param.='&date_startmonth='.GETPOST('date_startmonth', 'int');
|
||||
$param.='&date_startyear='.GETPOST('date_startyear', 'int');
|
||||
$param.='&date_stopday='.GETPOST('date_stopday', 'int');
|
||||
$param.='&date_stopmonth='.GETPOST('date_stopmonth', 'int');
|
||||
$param.='&date_stopyear='.GETPOST('date_stopyear', 'int');
|
||||
|
||||
print '<form name="dl" action="?action=dl" method="POST" >'."\n";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
|
||||
echo dol_print_date($date_start, 'day')." - ".dol_print_date($date_stop, 'day');
|
||||
|
||||
print '<input type="hidden" name="date_start" value="'.dol_print_date($date_start, 'dayxcard').'" />';
|
||||
print '<input type="hidden" name="date_stop" value="'.dol_print_date($date_stop, 'dayxcard').'" />';
|
||||
|
||||
//print '<input type="hidden" name="date_stopDay" value="'.dol_print_date($date_stop, '%d').'" />';
|
||||
//print '<input type="hidden" name="date_stopMonth" value="'.dol_print_date($date_stop, '%m').'" />';
|
||||
//print '<input type="hidden" name="date_stopYear" value="'.dol_print_date($date_stop, '%Y').'" />';
|
||||
|
||||
//print '<input type="hidden" name="date_startDay" value="'.dol_print_date($date_start, '%d').'" />';
|
||||
//print '<input type="hidden" name="date_startMonth" value="'.dol_print_date($date_start, '%m').'" />';
|
||||
//print '<input type="hidden" name="date_startYear" value="'.dol_print_date($date_start, '%m').'" />';
|
||||
|
||||
print '<input class="butAction" type="submit" value="'.$langs->trans("Download").'" />';
|
||||
print '</form>'."\n";
|
||||
|
||||
print '<br>';
|
||||
|
||||
print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre($arrayfields['date']['label'], $_SERVER["PHP_SELF"], "date", "", $param, 'align="center" class="nowrap"', $sortfield, $sortorder);
|
||||
print '<td>'.$langs->trans("Type").'</td>';
|
||||
print '<td>'.$langs->trans("Ref").'</td>';
|
||||
print '<td>'.$langs->trans("Link").'</td>';
|
||||
print '<td>'.$langs->trans("Paid").'</td>';
|
||||
print '<td class="right">'.$langs->trans("Debit").'</td>';
|
||||
print '<td class="right">'.$langs->trans("Credit").'</td>';
|
||||
print '<td class="right">'.$langs->trans("Balance").'</td>';
|
||||
print '</tr>';
|
||||
if ($result)
|
||||
{
|
||||
$TData = dol_sort_array($filesarray, 'date', 'ASC');
|
||||
|
||||
if (empty($TData))
|
||||
{
|
||||
print '<tr class="oddeven"><td colspan="7">'.$langs->trans("NoItem").'</td></tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sort array by date ASC to calculate balance
|
||||
|
||||
$totalDebit = 0;
|
||||
$totalCredit = 0;
|
||||
// Balance calculation
|
||||
$balance = 0;
|
||||
foreach($TData as &$data1) {
|
||||
if ($data1['item']!='Invoice'&& $data1['item']!='Donation' ){
|
||||
$data1['amount']=-$data1['amount'];
|
||||
}
|
||||
if ($data1['amount']>0){
|
||||
}else{
|
||||
}
|
||||
$balance += $data1['amount'];
|
||||
$data1['balance'] = $balance;
|
||||
}
|
||||
|
||||
// Display array
|
||||
foreach($TData as $data)
|
||||
{
|
||||
$html_class = '';
|
||||
//if (!empty($data['fk_facture'])) $html_class = 'facid-'.$data['fk_facture'];
|
||||
//elseif (!empty($data['fk_paiement'])) $html_class = 'payid-'.$data['fk_paiement'];
|
||||
print '<tr class="oddeven '.$html_class.'">';
|
||||
print "<td class=\"center\">";
|
||||
print dol_print_date($data['date'], 'day');
|
||||
print "</td>\n";
|
||||
print '<td class="left">'.$langs->trans($data['item']).'</td>';
|
||||
print '<td class="left">'.$data['ref'].'</td>';
|
||||
|
||||
// File link
|
||||
print '<td><a href='.DOL_URL_ROOT.'/'.$data['link'].">".$data['name']."</a></td>\n";
|
||||
|
||||
print '<td class="left">'.$data['paid'].'</td>';
|
||||
print '<td class="right">'.(($data['amount'] > 0) ? price(abs($data['amount'])) : '')."</td>\n";
|
||||
$totalDebit += ($data['amount'] > 0) ? abs($data['amount']) : 0;
|
||||
print '<td class="right">'.(($data['amount'] > 0) ? '' : price(abs($data['amount'])))."</td>\n";
|
||||
$totalCredit += ($data['amount'] > 0) ? 0 : abs($data['amount']);
|
||||
// Balance
|
||||
print '<td class="right">'.price($data['balance'])."</td>\n";
|
||||
print "</tr>\n";
|
||||
}
|
||||
|
||||
print '<tr class="liste_total">';
|
||||
print '<td colspan="5"> </td>';
|
||||
print '<td class="right">'.price($totalDebit).'</td>';
|
||||
print '<td class="right">'.price($totalCredit).'</td>';
|
||||
print '<td class="right">'.price(price2num($totalDebit - $totalCredit, 'MT')).'</td>';
|
||||
print "</tr>\n";
|
||||
}
|
||||
}
|
||||
print "</table>";
|
||||
print '</div>';
|
||||
}
|
||||
|
||||
llxFooter();
|
||||
$db->close();
|
||||
|
|
@ -959,11 +959,11 @@ if ($resql)
|
|||
$totalcreditnotes = $facturestatic->getSumCreditNotesUsed();
|
||||
$totaldeposits = $facturestatic->getSumDepositsUsed();
|
||||
$totalpay = $paiement + $totalcreditnotes + $totaldeposits;
|
||||
$remaintopay = $facturestatic->total_ttc - $totalpay;
|
||||
$remaintopay = price2num($facturestatic->total_ttc - $totalpay);
|
||||
if ($facturestatic->type == Facture::TYPE_CREDIT_NOTE && $obj->paye == 1) {
|
||||
$remaincreditnote = $discount->getAvailableDiscounts($obj->fk_soc, '', 'rc.fk_facture_source='.$facturestatic->id);
|
||||
$remaintopay = -$remaincreditnote;
|
||||
$totalpay = $facturestatic->total_ttc - $remaintopay;
|
||||
$totalpay = price2num($facturestatic->total_ttc - $remaintopay);
|
||||
}
|
||||
|
||||
print '<tr class="oddeven"';
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ $linkedObjectBlock = $GLOBALS['linkedObjectBlock'];
|
|||
|
||||
$langs->load("bills");
|
||||
|
||||
$linkedObjectBlock = dol_sort_array($linkedObjectBlock, 'date', 'desc');
|
||||
|
||||
$total=0; $ilink=0;
|
||||
foreach($linkedObjectBlock as $key => $objectlink)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -525,7 +525,7 @@ class Contact extends CommonObject
|
|||
*
|
||||
* @return array Tableau info des attributs
|
||||
*/
|
||||
private function _load_ldap_info()
|
||||
public function _load_ldap_info()
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf, $langs;
|
||||
|
|
|
|||
|
|
@ -6480,7 +6480,7 @@ class Form
|
|||
public function showLinkedObjectBlock($object, $morehtmlright = '', $compatibleImportElementsList = false)
|
||||
{
|
||||
global $conf,$langs,$hookmanager;
|
||||
global $bc;
|
||||
global $bc, $action;
|
||||
|
||||
$object->fetchObjectLinked();
|
||||
|
||||
|
|
@ -6525,6 +6525,7 @@ class Form
|
|||
$showImportButton=true;
|
||||
}
|
||||
|
||||
$regs = array();
|
||||
if ($objecttype != 'supplier_proposal' && preg_match('/^([^_]+)_([^_]+)/i', $objecttype, $regs))
|
||||
{
|
||||
$element = $regs[1];
|
||||
|
|
@ -6628,7 +6629,7 @@ class Form
|
|||
public function showLinkToObjectBlock($object, $restrictlinksto = array(), $excludelinksto = array())
|
||||
{
|
||||
global $conf, $langs, $hookmanager;
|
||||
global $bc;
|
||||
global $bc, $action;
|
||||
|
||||
$linktoelem='';
|
||||
$linktoelemlist='';
|
||||
|
|
@ -6663,8 +6664,6 @@ class Form
|
|||
);
|
||||
}
|
||||
|
||||
global $action;
|
||||
|
||||
// Can complete the possiblelink array
|
||||
$hookmanager->initHooks(array('commonobject'));
|
||||
$parameters=array('listofidcompanytoscan' => $listofidcompanytoscan);
|
||||
|
|
|
|||
|
|
@ -908,7 +908,7 @@ class FormCompany
|
|||
|
||||
$out = '<select class="flat '.$morecss.'" name="'.$htmlname.'" id="'.$htmlidname.'">';
|
||||
if ($typeinput=='form') {
|
||||
if ($selected == '') $out .= '<option value="-1"> </option>';
|
||||
if ($selected == '' || $selected == '-1') $out .= '<option value="-1"> </option>';
|
||||
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) {
|
||||
$out .= '<option value="2"'.($selected==2?' selected':'').'>'.$langs->trans('Prospect').'</option>';
|
||||
}
|
||||
|
|
@ -920,7 +920,7 @@ class FormCompany
|
|||
}
|
||||
$out .= '<option value="0"'.((string) $selected == '0'?' selected':'').'>'.$langs->trans('NorProspectNorCustomer').'</option>';
|
||||
} elseif ($typeinput=='list') {
|
||||
$out .= '<option value="-1"'.($selected==''?' selected':'').'> </option>';
|
||||
$out .= '<option value="-1"'.(($selected=='' || $selected == '-1')?' selected':'').'> </option>';
|
||||
if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) {
|
||||
$out .= '<option value="1,3"'.($selected=='1,3'?' selected':'').'>'.$langs->trans('Customer').'</option>';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -403,9 +403,13 @@ class DoliDBSqlite3 extends DoliDB
|
|||
*/
|
||||
public function query($query, $usesavepoint = 0, $type = 'auto')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$ret=null;
|
||||
|
||||
$query = trim($query);
|
||||
$this->error = 0;
|
||||
|
||||
$this->error = '';
|
||||
|
||||
// Convert MySQL syntax to SQLite syntax
|
||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i', $query, $reg)) {
|
||||
|
|
@ -449,7 +453,8 @@ class DoliDBSqlite3 extends DoliDB
|
|||
}
|
||||
//print "After convertSQLFromMysql:\n".$query."<br>\n";
|
||||
|
||||
dol_syslog('sql='.$query, LOG_DEBUG);
|
||||
if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK'))) dol_syslog('sql='.$query, LOG_DEBUG);
|
||||
if (empty($query)) return false; // Return false = error if empty request
|
||||
|
||||
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
|
||||
try {
|
||||
|
|
@ -481,7 +486,8 @@ class DoliDBSqlite3 extends DoliDB
|
|||
$errormsg .= ' ('.$this->lasterrno.')';
|
||||
}
|
||||
|
||||
dol_syslog($errormsg, LOG_ERR);
|
||||
if ($conf->global->SYSLOG_LEVEL < LOG_DEBUG) dol_syslog(get_class($this)."::query SQL Error query: ".$query, LOG_ERR); // Log of request was not yet done previously
|
||||
dol_syslog(get_class($this)."::query SQL Error message: ".$errormsg, LOG_ERR);
|
||||
}
|
||||
$this->lastquery=$query;
|
||||
$this->_results = $ret;
|
||||
|
|
|
|||
|
|
@ -1330,10 +1330,10 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi
|
|||
$nophoto='';
|
||||
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"></div>';
|
||||
}
|
||||
//elseif ($conf->browser->layout != 'phone') { // Show no photo link
|
||||
else { // Show no photo link
|
||||
$nophoto='/public/theme/common/nophoto.png';
|
||||
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"><img class="photo'.$modulepart.($cssclass?' '.$cssclass:'').'" alt="No photo"'.($width?' style="width: '.$width.'px"':'').' src="'.DOL_URL_ROOT.$nophoto.'"></div>';
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($object->element == 'ticket')
|
||||
|
|
@ -1349,10 +1349,10 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi
|
|||
$nophoto='';
|
||||
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"></div>';
|
||||
}
|
||||
//elseif ($conf->browser->layout != 'phone') { // Show no photo link
|
||||
$nophoto='/public/theme/common/nophoto.png';
|
||||
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"><img class="photo'.$modulepart.($cssclass?' '.$cssclass:'').'" alt="No photo" border="0"'.($width?' style="width: '.$width.'px"':'').' src="'.DOL_URL_ROOT.$nophoto.'"></div>';
|
||||
//}
|
||||
else { // Show no photo link
|
||||
$nophoto='/public/theme/common/nophoto.png';
|
||||
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"><img class="photo'.$modulepart.($cssclass?' '.$cssclass:'').'" alt="No photo" border="0"'.($width?' style="width: '.$width.'px"':'').' src="'.DOL_URL_ROOT.$nophoto.'"></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -5260,7 +5260,7 @@ function get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart)
|
|||
// Here, object->id, object->ref and modulepart are required.
|
||||
//var_dump($modulepart);
|
||||
if (in_array($modulepart, array('thirdparty','contact','member','propal','proposal','commande','order','facture','invoice',
|
||||
'supplier_order','supplier_proposal','shipment','contract','expensereport')))
|
||||
'supplier_order','supplier_proposal','shipment','contract','expensereport','ficheinter')))
|
||||
{
|
||||
$path=($object->ref?$object->ref:$object->id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -281,6 +281,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
|
|||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2430__+MAX_llx_menu__, 'accountancy', 'bookkeeping', 2400__+MAX_llx_menu__, '/accountancy/bookkeeping/list.php?mainmenu=accountancy&leftmenu=accountancy_bookeeping', 'Bookkeeping', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 15, __ENTITY__);
|
||||
-- Balance
|
||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2435__+MAX_llx_menu__, 'accountancy', 'balance', 2400__+MAX_llx_menu__, '/accountancy/bookkeeping/balance.php?mainmenu=accountancy&leftmenu=accountancy_balance', 'AccountBalance', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 16, __ENTITY__);
|
||||
-- Export accounting documents
|
||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2436__+MAX_llx_menu__, 'accountancy', 'accountancy_files', 2400__+MAX_llx_menu__, '/compta/compta-files.php?mainmenu=accountancy&leftmenu=accountancy_files', 'AccountantFiles', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 17, __ENTITY__);
|
||||
-- Reports
|
||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2440__+MAX_llx_menu__, 'accountancy', 'accountancy_report', 2400__+MAX_llx_menu__, '/compta/resultat/index.php?mainmenu=accountancy&leftmenu=accountancy_report', 'Reportings', 1, 'main', '$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire', '', 0, 17, __ENTITY__);
|
||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_report"', __HANDLER__, 'left', 2441__+MAX_llx_menu__, 'accountancy', 'accountancy_report', 2440__+MAX_llx_menu__, '/compta/resultat/index.php?mainmenu=accountancy&leftmenu=accountancy_report', 'MenuReportInOut', 2, 'main', '$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire', '', 0, 18, __ENTITY__);
|
||||
|
|
|
|||
|
|
@ -1285,9 +1285,9 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
|
|||
$newmenu->add("/accountancy/bookkeeping/balance.php?mainmenu=accountancy&leftmenu=accountancy_accountancy", $langs->trans("AccountBalance"), 1, $user->rights->accounting->mouvements->lire);
|
||||
|
||||
// Files
|
||||
if (! empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 2)
|
||||
if (! empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 1)
|
||||
{
|
||||
$newmenu->add("/compta/compta-files.php?mainmenu=accountancy&leftmenu=accountancy_files", $langs->trans("AccountantFiles"), 1, $user->rights->accounting->mouvements->lire);
|
||||
$newmenu->add("/compta/accounting-files.php?mainmenu=accountancy&leftmenu=accountancy_files", $langs->trans("AccountantFiles"), 1, $user->rights->accounting->mouvements->lire);
|
||||
}
|
||||
|
||||
// Reports
|
||||
|
|
@ -1329,6 +1329,12 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
|
|||
// Accountancy (simple)
|
||||
if (! empty($conf->comptabilite->enabled))
|
||||
{
|
||||
// Files
|
||||
if (! empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 1)
|
||||
{
|
||||
$newmenu->add("/compta/accounting-files.php?mainmenu=accountancy&leftmenu=accountancy_files", $langs->trans("AccountantFiles"), 0, $user->rights->compta->resultat->lire, '', $mainmenu, 'files');
|
||||
}
|
||||
|
||||
// Bilan, resultats
|
||||
$newmenu->add("/compta/resultat/index.php?leftmenu=report&mainmenu=accountancy", $langs->trans("Reportings"), 0, $user->rights->compta->resultat->lire, '', $mainmenu, 'ca');
|
||||
|
||||
|
|
|
|||
|
|
@ -53,11 +53,11 @@ if( (array) $linked_resources && count($linked_resources) > 0)
|
|||
}
|
||||
else
|
||||
{
|
||||
$style='';
|
||||
$class='';
|
||||
if ($linked_resource['rowid'] == GETPOST('lineid'))
|
||||
$style='style="background: orange;"';
|
||||
$class='highlight';
|
||||
|
||||
print '<div class="tagtr oddeven" '.$style.'>';
|
||||
print '<div class="tagtr oddeven'.($class?' '.$class:'').'">';
|
||||
|
||||
print '<div class="tagtd">';
|
||||
print $object_resource->getNomUrl(1);
|
||||
|
|
@ -81,7 +81,7 @@ if( (array) $linked_resources && count($linked_resources) > 0)
|
|||
print '</a>';
|
||||
print ' ';
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete_resource&id='.$linked_resource['resource_id'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">';
|
||||
print img_delete();
|
||||
print img_picto($langs->trans("Unlink"), 'unlink');
|
||||
print '</a>';
|
||||
print '</div>';
|
||||
|
||||
|
|
|
|||
0
htdocs/datapolicy/admin/index.html
Normal file
0
htdocs/datapolicy/admin/index.html
Normal file
0
htdocs/datapolicy/class/index.html
Normal file
0
htdocs/datapolicy/class/index.html
Normal file
0
htdocs/datapolicy/index.html
Normal file
0
htdocs/datapolicy/index.html
Normal file
0
htdocs/datapolicy/lib/index.html
Normal file
0
htdocs/datapolicy/lib/index.html
Normal file
0
htdocs/debugbar/index.html
Normal file
0
htdocs/debugbar/index.html
Normal file
|
|
@ -47,10 +47,25 @@ $confirm=GETPOST('confirm', 'alpha');
|
|||
$toselect = GETPOST('toselect', 'array');
|
||||
$contextpage=GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'expensereportlist';
|
||||
|
||||
$childids = $user->getAllChildIds(1);
|
||||
|
||||
// Security check
|
||||
$socid = GETPOST('socid', 'int');
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result = restrictedArea($user, 'expensereport', '', '');
|
||||
$id = GETPOST('id', 'int');
|
||||
// If we are on the view of a specific user
|
||||
if ($id > 0)
|
||||
{
|
||||
$canread=0;
|
||||
if ($id == $user->id) $canread=1;
|
||||
if (! empty($user->rights->expensereport->readall)) $canread=1;
|
||||
if (! empty($user->rights->expensereport->lire) && in_array($id, $childids)) $canread=1;
|
||||
if (! $canread)
|
||||
{
|
||||
accessforbidden();
|
||||
}
|
||||
}
|
||||
|
||||
$diroutputmassaction=$conf->expensereport->dir_output . '/temp/massgeneration/'.$user->id;
|
||||
|
||||
|
|
@ -67,7 +82,6 @@ $pagenext = $page + 1;
|
|||
if (!$sortorder) $sortorder="DESC";
|
||||
if (!$sortfield) $sortfield="d.date_debut";
|
||||
|
||||
$id = GETPOST('id', 'int');
|
||||
|
||||
$sall = trim((GETPOST('search_all', 'alphanohtml')!='')?GETPOST('search_all', 'alphanohtml'):GETPOST('sall', 'alphanohtml'));
|
||||
$search_ref = GETPOST('search_ref', 'alpha');
|
||||
|
|
@ -291,7 +305,6 @@ if ($search_status != '' && $search_status >= 0) $sql.=" AND d.fk_statut IN (".$
|
|||
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)
|
||||
&& (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->expensereport->writeall_advance)))
|
||||
{
|
||||
$childids = $user->getAllChildIds(1);
|
||||
$sql.= " AND d.fk_user_author IN (".join(',', $childids).")\n";
|
||||
}
|
||||
// Add where from extra fields
|
||||
|
|
@ -434,7 +447,7 @@ if ($resql)
|
|||
$canedit=((in_array($user_id, $childids) && $user->rights->expensereport->creer)
|
||||
|| ($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->expensereport->writeall_advance));
|
||||
|
||||
// Boutons d'actions
|
||||
// Buttons for actions
|
||||
if ($canedit)
|
||||
{
|
||||
print '<a href="'.DOL_URL_ROOT.'/expensereport/card.php?action=create&fk_user_author='.$fuser->id.'" class="butAction">'.$langs->trans("AddTrip").'</a>';
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* Copyright (C) 2004 Christophe Combelles <ccomb@free.fr>
|
||||
* Copyright (C) 2005 Marc Barilley <marc@ocebo.fr>
|
||||
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2010-2014 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2010-2019 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013-2015 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2014-2016 Marcos García <marcosgdf@gmail.com>
|
||||
|
|
@ -831,6 +831,8 @@ if (empty($reshook))
|
|||
// Auto calculation of date due if not filled by user
|
||||
if(empty($object->date_echeance)) $object->date_echeance = $object->calculate_date_lim_reglement();
|
||||
|
||||
$object->fetch_thirdparty();
|
||||
|
||||
// If creation from another object of another module
|
||||
if (! $error && $_POST['origin'] && $_POST['originid'])
|
||||
{
|
||||
|
|
@ -3019,7 +3021,7 @@ else
|
|||
if ($action != 'presend')
|
||||
{
|
||||
/*
|
||||
* Boutons actions
|
||||
* Buttons actions
|
||||
*/
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
|
|
|
|||
|
|
@ -1391,9 +1391,10 @@ else
|
|||
|
||||
if (! $edit)
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
// Buttons for actions
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
// Boutons d'actions
|
||||
if ($cancreate && $object->statut == Holiday::STATUS_DRAFT)
|
||||
{
|
||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit" class="butAction">'.$langs->trans("EditCP").'</a>';
|
||||
|
|
|
|||
|
|
@ -61,6 +61,18 @@ if ($user->societe_id > 0) // Protection if external user
|
|||
}
|
||||
$result = restrictedArea($user, 'holiday', $id, '');
|
||||
$id = GETPOST('id', 'int');
|
||||
// If we are on the view of a specific user
|
||||
if ($id > 0)
|
||||
{
|
||||
$canread=0;
|
||||
if ($id == $user->id) $canread=1;
|
||||
if (! empty($user->rights->holiday->read_all)) $canread=1;
|
||||
if (! empty($user->rights->holiday->read) && in_array($id, $childids)) $canread=1;
|
||||
if (! $canread)
|
||||
{
|
||||
accessforbidden();
|
||||
}
|
||||
}
|
||||
|
||||
// Load variable for pagination
|
||||
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
|
||||
|
|
@ -319,11 +331,12 @@ if ($id > 0) // For user tab
|
|||
|
||||
dol_fiche_end();
|
||||
|
||||
// Buttons for actions
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
$canedit=(($user->id == $user_id && $user->rights->holiday->write) || ($user->id != $user_id && $user->rights->holiday->write_all));
|
||||
|
||||
// Boutons d'actions
|
||||
if ($canedit)
|
||||
{
|
||||
print '<a href="'.DOL_URL_ROOT.'/holiday/card.php?action=request&fuserid='.$user_id.'" class="butAction">'.$langs->trans("AddCP").'</a>';
|
||||
|
|
|
|||
|
|
@ -745,7 +745,7 @@ IMG;
|
|||
private function _rrmdir($dir)
|
||||
{
|
||||
if ($handle = opendir($dir)) {
|
||||
while (false !== ($file = readdir($handle))) {
|
||||
while (($file = readdir($handle)) !== false) {
|
||||
if ($file != '.' && $file != '..') {
|
||||
if (is_dir($dir . '/' . $file)) {
|
||||
$this->_rrmdir($dir . '/' . $file);
|
||||
|
|
|
|||
|
|
@ -60,6 +60,8 @@ CREATE TABLE llx_pos_cash_fence(
|
|||
|
||||
-- For 10.0
|
||||
|
||||
UPDATE llx_chargesociales SET date_creation = tms WHERE date_creation IS NULL;
|
||||
|
||||
DROP TABLE llx_cotisation;
|
||||
ALTER TABLE llx_accounting_bookkeeping DROP COLUMN validated;
|
||||
ALTER TABLE llx_accounting_bookkeeping_tmp DROP COLUMN validated;
|
||||
|
|
|
|||
|
|
@ -199,6 +199,15 @@ delete from llx_element_element where sourcetype='commande' and fk_source not in
|
|||
DELETE FROM llx_actioncomm_resources WHERE fk_actioncomm not in (select id from llx_actioncomm);
|
||||
|
||||
|
||||
-- Fix link on parent that were removed
|
||||
DROP table tmp_user;
|
||||
CREATE TABLE tmp_user as (select * from llx_user);
|
||||
UPDATE llx_user SET fk_user = NULL where fk_user NOT IN (select rowid from tmp_user);
|
||||
|
||||
|
||||
update llx_user set fk_user = null where fk_user not in (select rowid from llx_user);
|
||||
|
||||
|
||||
UPDATE llx_product SET canvas = NULL where canvas = 'default@product';
|
||||
UPDATE llx_product SET canvas = NULL where canvas = 'service@product';
|
||||
|
||||
|
|
@ -400,6 +409,7 @@ ALTER TABLE llx_accounting_account ADD UNIQUE INDEX uk_accounting_account (accou
|
|||
-- p.tva_tx = 0
|
||||
-- where price = 17.5
|
||||
|
||||
UPDATE llx_chargesociales SET date_creation = tms WHERE date_creation IS NULL;
|
||||
|
||||
-- VMYSQL4.1 SET sql_mode = 'ALLOW_INVALID_DATES';
|
||||
-- VMYSQL4.1 update llx_accounting_account set tms = datec where DATE(STR_TO_DATE(tms, '%Y-%m-%d')) IS NULL;
|
||||
|
|
|
|||
|
|
@ -65,34 +65,34 @@ create table llx_societe
|
|||
fk_typent integer DEFAULT 0, --
|
||||
fk_forme_juridique integer DEFAULT 0, -- juridical status
|
||||
fk_currency varchar(3), -- default currency
|
||||
siren varchar(128), -- IDProf1: siren or RCS for france, ...
|
||||
siret varchar(128), -- IDProf2: siret for france, ...
|
||||
ape varchar(128), -- IDProf3: code ape for france, ...
|
||||
idprof4 varchar(128), -- IDProf4: nu for france
|
||||
idprof5 varchar(128), -- IDProf5: nu for france
|
||||
idprof6 varchar(128), -- IDProf6: nu for france
|
||||
tva_intra varchar(20), -- tva
|
||||
capital double(24,8) DEFAULT NULL, -- capital de la societe
|
||||
fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial statut
|
||||
siren varchar(128), -- IDProf1: depends on country (example: siren or RCS for france, ...)
|
||||
siret varchar(128), -- IDProf2: depends on country (example: siret for france, ...)
|
||||
ape varchar(128), -- IDProf3: depends on country (example: code ape for france, ...)
|
||||
idprof4 varchar(128), -- IDProf4: depends on country (example: nu for france, ...)
|
||||
idprof5 varchar(128), -- IDProf5: depends on country (example: nu for france, ...)
|
||||
idprof6 varchar(128), -- IDProf6: depends on country (example: nu for france, ...
|
||||
tva_intra varchar(20), -- vat numero
|
||||
capital double(24,8) DEFAULT NULL, -- capital of company
|
||||
fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial status
|
||||
note_private text, --
|
||||
note_public text, --
|
||||
model_pdf varchar(255),
|
||||
prefix_comm varchar(5), -- prefix commercial
|
||||
prefix_comm varchar(5), -- prefix commercial (deprecated)
|
||||
client tinyint DEFAULT 0, -- client 0/1/2
|
||||
fournisseur tinyint DEFAULT 0, -- fournisseur 0/1
|
||||
supplier_account varchar(32), -- compte client chez un fournisseur
|
||||
supplier_account varchar(32), -- Id of our customer account known by the supplier
|
||||
fk_prospectlevel varchar(12), -- prospect level (in llx_c_prospectlevel)
|
||||
fk_incoterms integer, -- for incoterms
|
||||
location_incoterms varchar(255), -- for incoterms
|
||||
customer_bad tinyint DEFAULT 0, -- mauvais payeur 0/1
|
||||
customer_rate real DEFAULT 0, -- taux fiabilite client (0 a 1)
|
||||
supplier_rate real DEFAULT 0, -- taux fiabilite fournisseur (0 a 1)
|
||||
remise_client real DEFAULT 0, -- remise systematique pour le client
|
||||
remise_supplier real DEFAULT 0, -- remise systematique auprès du fournisseur
|
||||
mode_reglement tinyint, -- mode de reglement
|
||||
cond_reglement tinyint, -- condition de reglement
|
||||
mode_reglement_supplier tinyint, -- mode de reglement fournisseur
|
||||
cond_reglement_supplier tinyint, -- condition de reglement fournisseur
|
||||
remise_client real DEFAULT 0, -- discount by default granted to this customer
|
||||
remise_supplier real DEFAULT 0, -- discount by default granted by this supplier
|
||||
mode_reglement tinyint, -- payment mode customer
|
||||
cond_reglement tinyint, -- payment term customer
|
||||
mode_reglement_supplier tinyint, -- payment mode supplier
|
||||
cond_reglement_supplier tinyint, -- payment term supplier
|
||||
fk_shipping_method integer, -- preferred shipping method id
|
||||
tva_assuj tinyint DEFAULT 1, -- assujeti ou non a la TVA
|
||||
localtax1_assuj tinyint DEFAULT 0, -- assujeti ou non a local tax 1
|
||||
|
|
|
|||
|
|
@ -421,6 +421,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||
|
||||
|
||||
// Buttons for actions
|
||||
|
||||
if ($action != 'presend' && $action != 'editline') {
|
||||
print '<div class="tabsAction">'."\n";
|
||||
$parameters=array();
|
||||
|
|
|
|||
|
|
@ -249,8 +249,8 @@ if (isset($_POST["ajoutercolonne"]) && $object->format == "D")
|
|||
|
||||
$dateinsertion = substr("$dateinsertion", 1);
|
||||
|
||||
//mise a jour avec les nouveaux sujets dans la base
|
||||
if (isset($erreur_ajout_date) && !$erreur_ajout_date)
|
||||
// update with new topics into database
|
||||
if (isset($erreur_ajout_date) && empty($erreur_ajout_date))
|
||||
{
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX."opensurvey_sondage";
|
||||
$sql.= " SET sujet = '".$db->escape($dateinsertion)."'";
|
||||
|
|
@ -619,7 +619,7 @@ print '<tr>'."\n";
|
|||
print '<td></td>'."\n";
|
||||
print '<td></td>'."\n";
|
||||
|
||||
//boucle pour l'affichage des boutons de suppression de colonne
|
||||
// loop to show the delete link
|
||||
if ($user->rights->opensurvey->write) {
|
||||
for ($i = 0; isset($toutsujet[$i]); $i++) {
|
||||
|
||||
|
|
|
|||
|
|
@ -471,7 +471,7 @@ for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) {
|
|||
{
|
||||
$nbofchoice=count($_SESSION["totalchoixjour"]);
|
||||
for ($j = 0; $j < $nbofchoice; $j++) {
|
||||
//affichage des boutons ROUGES
|
||||
// show red buttons
|
||||
if (date("j", $_SESSION["totalchoixjour"][$j]) == $numerojour && date("n", $_SESSION["totalchoixjour"][$j]) == $_SESSION["mois"] && date("Y", $_SESSION["totalchoixjour"][$j]) == $_SESSION["annee"]) {
|
||||
print '<td align="center" class="choisi"><input type="submit" class="bouton OFF" name="choixjourretrait[]" value="'.$numerojour.'"></td>'."\n";
|
||||
$dejafait = $numerojour;
|
||||
|
|
@ -479,13 +479,13 @@ for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) {
|
|||
}
|
||||
}
|
||||
|
||||
//Si pas de bouton ROUGE alors on affiche un bouton VERT ou GRIS avec le numéro du jour dessus
|
||||
// If no red button, we show green or grey button with number of day
|
||||
if (isset($dejafait) === false || $dejafait != $numerojour){
|
||||
//bouton vert
|
||||
// green button
|
||||
if (($numerojour >= $jourAJ && $_SESSION["mois"] == $moisAJ && $_SESSION["annee"] == $anneeAJ) || ($_SESSION["mois"] > $moisAJ && $_SESSION["annee"] == $anneeAJ) || $_SESSION["annee"] > $anneeAJ) {
|
||||
print '<td align="center" class="libre"><input type="submit" class="bouton ON" name="choixjourajout[]" value="'.$numerojour.'"></td>'."\n";
|
||||
} else {
|
||||
//bouton gris
|
||||
// grey button
|
||||
print '<td align="center" class="avant">'.$numerojour.'</td>'."\n";
|
||||
}
|
||||
}
|
||||
|
|
@ -547,7 +547,7 @@ if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur)
|
|||
|
||||
print '</table>'."\n";
|
||||
|
||||
//affichage des boutons de formulaire pour annuler, effacer les jours ou créer le sondage
|
||||
// show buttons to cancel, delete days or create survey
|
||||
print '<table>'."\n";
|
||||
print '<tr>'."\n";
|
||||
print '<td><input type="submit" class="button" name="reset" value="'. dol_escape_htmltag($langs->trans("RemoveAllDays")) .'"></td><td><input type="submit" class="button" name="reporterhoraires" value="'. dol_escape_htmltag($langs->trans("CopyHoursOfFirstDay")) .'"></td><td><input type="submit" class="button" name="resethoraires" value="'. dol_escape_htmltag($langs->trans("RemoveAllHours")) .'"></td></tr>'."\n";
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ if (GETPOST('choix_sondage'))
|
|||
}
|
||||
else
|
||||
{
|
||||
// affichage des boutons pour choisir sondage date ou autre
|
||||
// Show image to selecte between date survey or other survey
|
||||
print '<br><table>'."\n";
|
||||
print '<tr><td>'. $langs->trans("CreateSurveyDate") .'</td><td></td> '."\n";
|
||||
print '<td><input type="image" name="creation_sondage_date" value="'.$langs->trans('CreateSurveyDate').'" src="../img/calendar-32.png"></td></tr>'."\n";
|
||||
|
|
|
|||
|
|
@ -333,7 +333,8 @@ else
|
|||
|
||||
print '<br>';
|
||||
|
||||
// Boutons actions
|
||||
// Buttons for actions
|
||||
|
||||
print '<div class="center">';
|
||||
print '<input type="submit" id="convert_vatrate" name="convert_vatrate" value="'.$langs->trans("MassConvert").'" class="button" />';
|
||||
print '</div>';
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ if (empty($reshook))
|
|||
$db->begin();
|
||||
|
||||
$resql = $object->update($object->id, $user);
|
||||
if (! $resql || $resql < 0)
|
||||
if ($resql <= 0)
|
||||
{
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2014-2017 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
||||
* Copyright (C) 2019 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -707,6 +708,27 @@ class Project extends CommonObject
|
|||
$ret = $this->deleteTasks($user);
|
||||
if ($ret < 0) $error++;
|
||||
|
||||
|
||||
// Delete all child tables
|
||||
if (! $error) {
|
||||
$elements = array('categorie_project'); // elements to delete. TODO Make goodway to delete
|
||||
foreach($elements as $table)
|
||||
{
|
||||
if (! $error) {
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$table;
|
||||
$sql.= " WHERE fk_project = ".$this->id;
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if (! $result) {
|
||||
$error++;
|
||||
$this->errors[] = $this->db->lasterror();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Delete project
|
||||
if (! $error)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -952,10 +952,10 @@ else
|
|||
$object->name = GETPOST('name', 'alpha');
|
||||
$object->firstname = GETPOST('firstname', 'alpha');
|
||||
$object->particulier = $private;
|
||||
$object->prefix_comm = GETPOST('prefix_comm');
|
||||
$object->client = GETPOST('client')?GETPOST('client'):$object->client;
|
||||
$object->prefix_comm = GETPOST('prefix_comm', 'alpha');
|
||||
$object->client = GETPOST('client', 'int')?GETPOST('client', 'int'):$object->client;
|
||||
|
||||
if(empty($duplicate_code_error)) {
|
||||
if (empty($duplicate_code_error)) {
|
||||
$object->code_client = GETPOST('customer_code', 'alpha');
|
||||
$object->fournisseur = GETPOST('fournisseur')?GETPOST('fournisseur'):$object->fournisseur;
|
||||
}
|
||||
|
|
@ -1187,7 +1187,7 @@ else
|
|||
// Prospect/Customer
|
||||
print '<tr><td class="titlefieldcreate">'.$form->editfieldkey('ProspectCustomer', 'customerprospect', '', $object, 0, 'string', '', 1).'</td>';
|
||||
print '<td class="maxwidthonsmartphone">';
|
||||
$selected=GETPOST('client', 'int')!=''?GETPOST('client', 'int'):$object->client;
|
||||
$selected=(GETPOSTISSET('client', 'int')?GETPOST('client', 'int'):$object->client);
|
||||
print $formcompany->selectProspectCustomerType($selected);
|
||||
print '</td>';
|
||||
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ class SocieteAccount extends CommonObject
|
|||
* @param string $id Id of customer in external system (example: 'cu_xxxxxxxxxxxxx', ...)
|
||||
* @param string $site Site (example: 'stripe', '...')
|
||||
* @param int $status Status (0=test, 1=live)
|
||||
* @return string Id of third party
|
||||
* @return int Id of third party
|
||||
* @see getCustomerAccount()
|
||||
*/
|
||||
public function getThirdPartyID($id, $site, $status = 0)
|
||||
|
|
|
|||
|
|
@ -247,6 +247,8 @@ class Stripe extends CommonObject
|
|||
*/
|
||||
public function getPaymentMethodStripe($paymentmethod, $key = '', $status = 0)
|
||||
{
|
||||
$stripepaymentmethod = null;
|
||||
|
||||
try {
|
||||
// Force to use the correct API key
|
||||
global $stripearrayofkeysbyenv;
|
||||
|
|
@ -261,6 +263,7 @@ class Stripe extends CommonObject
|
|||
{
|
||||
$this->error = $e->getMessage();
|
||||
}
|
||||
|
||||
return $stripepaymentmethod;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
|||
|
||||
|
||||
/* ============================================================================== */
|
||||
/* Boutons actions */
|
||||
/* Buttons for actions */
|
||||
/* ============================================================================== */
|
||||
|
||||
div.divButAction {
|
||||
|
|
|
|||
|
|
@ -2362,7 +2362,7 @@ span.tabspan {
|
|||
}
|
||||
|
||||
/* ============================================================================== */
|
||||
/* Boutons actions */
|
||||
/* Buttons for actions */
|
||||
/* ============================================================================== */
|
||||
<?php include dol_buildpath($path.'/theme/'.$theme.'/btn.inc.php', 0); ?>
|
||||
|
||||
|
|
|
|||
|
|
@ -2400,7 +2400,7 @@ div.tabBar table.tableforservicepart2:last-child {
|
|||
}
|
||||
|
||||
/* ============================================================================== */
|
||||
/* Boutons actions */
|
||||
/* Buttons for actions */
|
||||
/* ============================================================================== */
|
||||
|
||||
div.divButAction {
|
||||
|
|
@ -2503,7 +2503,7 @@ span.tabspan {
|
|||
}
|
||||
|
||||
/* ============================================================================== */
|
||||
/* Boutons actions */
|
||||
/* Buttons for actions */
|
||||
/* ============================================================================== */
|
||||
|
||||
div.divButAction {
|
||||
|
|
|
|||
|
|
@ -774,7 +774,7 @@ class User extends CommonObject
|
|||
dol_syslog(get_class($this)."::clearrights reset user->rights");
|
||||
$this->rights='';
|
||||
$this->nb_rights=0;
|
||||
$this->all_permissions_are_loaded=false;
|
||||
$this->all_permissions_are_loaded=0;
|
||||
$this->_tab_loaded=array();
|
||||
}
|
||||
|
||||
|
|
@ -799,16 +799,16 @@ class User extends CommonObject
|
|||
return;
|
||||
}
|
||||
|
||||
if ($this->all_permissions_are_loaded)
|
||||
if (! empty($this->all_permissions_are_loaded))
|
||||
{
|
||||
// We already loaded all rights for this user, so we leave
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Recuperation des droits utilisateurs + recuperation des droits groupes
|
||||
// Get permission of users + Get permissions of groups
|
||||
|
||||
// D'abord les droits utilisateurs
|
||||
// First user permissions
|
||||
$sql = "SELECT DISTINCT r.module, r.perms, r.subperms";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."user_rights as ur";
|
||||
$sql.= ", ".MAIN_DB_PREFIX."rights_def as r";
|
||||
|
|
@ -862,7 +862,7 @@ class User extends CommonObject
|
|||
$this->db->free($resql);
|
||||
}
|
||||
|
||||
// Maintenant les droits groupes
|
||||
// Now permissions of groups
|
||||
$sql = "SELECT DISTINCT r.module, r.perms, r.subperms";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."usergroup_rights as gr,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as gu,";
|
||||
|
|
@ -933,7 +933,7 @@ class User extends CommonObject
|
|||
}
|
||||
else
|
||||
{
|
||||
// Si module defini, on le marque comme charge en cache
|
||||
// If module defined, we flag it as loaded into cache
|
||||
$this->_tab_loaded[$moduletag]=1;
|
||||
}
|
||||
}
|
||||
|
|
@ -2300,7 +2300,6 @@ class User extends CommonObject
|
|||
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && $withpictoimg) $withpictoimg=0;
|
||||
|
||||
$result=''; $label='';
|
||||
$link=''; $linkstart=''; $linkend='';
|
||||
|
||||
if (! empty($this->photo))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -552,13 +552,13 @@ class UserGroup extends CommonObject
|
|||
|
||||
if ($moduletag && isset($this->_tab_loaded[$moduletag]) && $this->_tab_loaded[$moduletag])
|
||||
{
|
||||
// Le fichier de ce module est deja charge
|
||||
// Rights for this module are already loaded, so we leave
|
||||
return;
|
||||
}
|
||||
|
||||
if (! empty($this->all_permissions_are_loaded))
|
||||
{
|
||||
// Si les permissions ont deja ete chargees, on quitte
|
||||
// We already loaded all rights for this group, so we leave
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -618,7 +618,7 @@ class UserGroup extends CommonObject
|
|||
}
|
||||
else
|
||||
{
|
||||
// Si module defini, on le marque comme charge en cache
|
||||
// If module defined, we flag it as loaded into cache
|
||||
$this->_tab_loaded[$moduletag]=1;
|
||||
}
|
||||
|
||||
|
|
@ -867,7 +867,6 @@ class UserGroup extends CommonObject
|
|||
if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && $withpicto) $withpicto=0;
|
||||
|
||||
$result=''; $label='';
|
||||
$link=''; $linkstart=''; $linkend='';
|
||||
|
||||
$label.= '<div class="centpercent">';
|
||||
$label.= '<u>' . $langs->trans("Group") . '</u><br>';
|
||||
|
|
@ -957,7 +956,7 @@ class UserGroup extends CommonObject
|
|||
public function _load_ldap_info()
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf,$langs;
|
||||
global $conf;
|
||||
|
||||
$info=array();
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ if (! empty($conf->projet->enabled)) $tmparray['projet/index.php?mainmenu=projec
|
|||
if (! empty($conf->holiday->enabled) || ! empty($conf->expensereport->enabled)) $tmparray['hrm/index.php?mainmenu=hrm&leftmenu=']='HRMArea'; // TODO Complete list with first level of menus
|
||||
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) $tmparray['product/index.php?mainmenu=products&leftmenu=']='ProductsAndServicesArea';
|
||||
if (! empty($conf->propal->enabled) || ! empty($conf->commande->enabled) || ! empty($conf->ficheinter->enabled) || ! empty($conf->contrat->enabled)) $tmparray['comm/index.php?mainmenu=commercial&leftmenu=']='CommercialArea';
|
||||
if (! empty($conf->compta->enabled) || ! empty($conf->accounting->enabled)) $tmparray['compta/index.php?mainmenu=compta&leftmenu=']='AccountancyTreasuryArea';
|
||||
if (! empty($conf->comptabilite->enabled) || ! empty($conf->accounting->enabled)) $tmparray['compta/index.php?mainmenu=compta&leftmenu=']='AccountancyTreasuryArea';
|
||||
if (! empty($conf->adherent->enabled)) $tmparray['adherents/index.php?mainmenu=members&leftmenu=']='MembersArea';
|
||||
if (! empty($conf->agenda->enabled)) $tmparray['comm/action/index.php?mainmenu=agenda&leftmenu=']='Agenda';
|
||||
|
||||
|
|
|
|||
0
htdocs/website/class/index.html
Normal file
0
htdocs/website/class/index.html
Normal file
0
htdocs/website/lib/index.html
Normal file
0
htdocs/website/lib/index.html
Normal file
Loading…
Reference in New Issue
Block a user