Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into mko559

This commit is contained in:
Maxime Kohlhaas 2012-10-30 08:06:29 +01:00
commit fa46923b3e
39 changed files with 3129 additions and 3104 deletions

View File

@ -55,6 +55,7 @@ For users:
- New: [ task #104 ] Can create an invoice from several orders - New: [ task #104 ] Can create an invoice from several orders
- New: Update libs/tools/logo for DoliWamp (now use PHP 5.3). - New: Update libs/tools/logo for DoliWamp (now use PHP 5.3).
- New: Added ODT Template tag {object_total_discount} - New: Added ODT Template tag {object_total_discount}
- New: Add new import options: Third parties bank details, warehouses and stocks, categories and suppliers prices
New experimental modules: New experimental modules:
- New: Add margin management module. - New: Add margin management module.

View File

@ -1,6 +1,6 @@
INSTALL INSTALL
------- -------
English: See file README. English: See README file.
French: Voir fichier README-FR. French: Voir fichier README-FR.

View File

@ -14,7 +14,7 @@ Summary(es): Software ERP y CRM para pequeñas y medianas empresas, asociaciones
Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations
Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti
License: GPLv2+ License: GPL-2+
#Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net> #Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
Vendor: Dolibarr dev team Vendor: Dolibarr dev team

View File

@ -18,7 +18,7 @@ Summary(es): Software ERP y CRM para pequeñas y medianas empresas, asociaciones
Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations
Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti
License: GPLv2+ License: GPL-2+
#Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net> #Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
Vendor: Dolibarr dev team Vendor: Dolibarr dev team
@ -119,11 +119,15 @@ cui hai bisogno ed essere facile da usare.
%install %install
%if 0%{?sles_version} %if 0%{?sles_version}
%{__rm} -rf $RPM_BUILD_ROOT
%{__mkdir} $RPM_BUILD_ROOT
%{__mkdir} $RPM_BUILD_ROOT%{_sysconfdir}
%{__mkdir} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
%else %else
%{__rm} -rf $RPM_BUILD_ROOT %{__rm} -rf $RPM_BUILD_ROOT
%{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
%endif %endif
%{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
%{__install} -m 644 build/rpm/conf.php $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/conf.php %{__install} -m 644 build/rpm/conf.php $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/conf.php
%{__install} -m 644 build/rpm/httpd-dolibarr.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/apache.conf %{__install} -m 644 build/rpm/httpd-dolibarr.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/apache.conf
%{__install} -m 644 build/rpm/file_contexts.dolibarr $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/file_contexts.dolibarr %{__install} -m 644 build/rpm/file_contexts.dolibarr $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/file_contexts.dolibarr
@ -145,7 +149,7 @@ cui hai bisogno ed essere facile da usare.
%{__install} -m 644 doc/images/dolibarr_48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png %{__install} -m 644 doc/images/dolibarr_48x48.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/applications %{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/applications
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion} || 0%{?suse_version} %if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version} || 0%{?mdkversion} || 0%{?suse_version}
#desktop-file-install --delete-original --dir=$RPM_BUILD_ROOT%{_datadir}/applications build/rpm/%{name}.desktop desktop-file-install --delete-original --dir=$RPM_BUILD_ROOT%{_datadir}/applications build/rpm/%{name}.desktop
%endif %endif
%{__install} -m 644 build/rpm/dolibarr.desktop $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop %{__install} -m 644 build/rpm/dolibarr.desktop $RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop

View File

@ -14,7 +14,7 @@ Summary(es): Software ERP y CRM para pequeñas y medianas empresas, asociaciones
Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations
Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti
License: GPLv2+ License: GPL-2+
#Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net> #Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
Vendor: Dolibarr dev team Vendor: Dolibarr dev team

View File

@ -14,7 +14,7 @@ Summary(es): Software ERP y CRM para pequeñas y medianas empresas, asociaciones
Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations
Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti
License: GPLv2+ License: GPL-2+
#Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net> #Packager: Laurent Destailleur (Eldy) <eldy@users.sourceforge.net>
Vendor: Dolibarr dev team Vendor: Dolibarr dev team

View File

@ -3196,7 +3196,7 @@ class FactureLigne
$this->rowid = $objp->rowid; $this->rowid = $objp->rowid;
$this->fk_facture = $objp->fk_facture; $this->fk_facture = $objp->fk_facture;
$this->fk_parent_line = $objp->fk_parent_line; $this->fk_parent_line = $objp->fk_parent_line;
$this->label = $objp->label; $this->label = $objp->custom_label;
$this->desc = $objp->description; $this->desc = $objp->description;
$this->qty = $objp->qty; $this->qty = $objp->qty;
$this->subprice = $objp->subprice; $this->subprice = $objp->subprice;

View File

@ -137,7 +137,7 @@ if (! dol_is_dir($upload_dir))
} }
print '<!-- TYPE='.$type.' -->'."\n"; print '<!-- TYPE='.$type.' -->'."\n";
print '<!-- Page called with mode='.(isset($mode)?$mode:'').' url='.$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"].' -->'."\n"; print '<!-- Page called with mode='.(isset($mode)?$mode:'').' type='.$type.' module='.$module.' url='.$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"].' -->'."\n";
$param=''; $param='';
$param.=($sortfield?'&sortfield='.$sortfield:'').($sortorder?'&sortorder='.$sortorder:''); $param.=($sortfield?'&sortfield='.$sortfield:'').($sortorder?'&sortorder='.$sortorder:'');
@ -176,10 +176,8 @@ if ($type == 'directory')
$relativepath='facture'; $relativepath='facture';
$upload_dir = $conf->fournisseur->dir_output.'/'.$relativepath; $upload_dir = $conf->fournisseur->dir_output.'/'.$relativepath;
$filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1);
$param.='&module='.$module; $param.='&module='.$module;
$textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("NoFileFound"))); $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("NoFileFound")));
$formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname,$url); $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname,$url);
} }
else if ($module == 'propal') // Auto area for customers orders else if ($module == 'propal') // Auto area for customers orders

View File

@ -74,6 +74,7 @@ if ($modulepart == 'ecm')
top_httphead(); top_httphead();
//print '<!-- selecteddir = '.$selecteddir.', openeddir = '.$openeddir.', modulepart='.$modulepart.' -->'."\n";
$userstatic=new User($db); $userstatic=new User($db);
$form=new Form($db); $form=new Form($db);
$ecmdirstatic = new EcmDirectory($db); $ecmdirstatic = new EcmDirectory($db);

View File

@ -2408,8 +2408,8 @@ class Form
$autoOpen=false; $autoOpen=false;
$dialogconfirm.='-'.$button; $dialogconfirm.='-'.$button;
} }
$pageyes=(preg_match('/\?/',$page)?'&':'?').'action='.$action.'&confirm=yes'; $pageyes=$page.(preg_match('/\?/',$page)?'&':'?').'action='.$action.'&confirm=yes';
$pageno=($useajax == 2 ? (preg_match('/\?/',$page)?'&':'?').'confirm=no':''); $pageno=($useajax == 2 ? $page.(preg_match('/\?/',$page)?'&':'?').'confirm=no':'');
// Add input fields into list of fields to read during submit (inputok and inputko) // Add input fields into list of fields to read during submit (inputok and inputko)
if (is_array($formquestion)) if (is_array($formquestion))
{ {

View File

@ -789,7 +789,7 @@ class FormFile
$var=true; $var=true;
foreach($filearray as $key => $file) foreach($filearray as $key => $file)
{ {
if (!is_dir($file['name']) if (!is_dir($file['name'])
&& $file['name'] != '.' && $file['name'] != '.'
&& $file['name'] != '..' && $file['name'] != '..'
&& $file['name'] != 'CVS' && $file['name'] != 'CVS'
@ -821,10 +821,10 @@ class FormFile
} }
else else
{ {
//print 'Fetch '.$idorref.'<br>'; //print 'Fetch '.$id." - ".$ref.'<br>';
$result=$object_instance->fetch($id,$ref); $result=$object_instance->fetch($id,$ref);
if ($result > 0) { $found=1; $this->cache_objects[$modulepart.'_'.$id.'_'.$ref]=dol_clone($object_instance); } // Save object into a cache if ($result > 0) { $found=1; $this->cache_objects[$modulepart.'_'.$id.'_'.$ref]=dol_clone($object_instance); } // Save object into a cache
if ($result == 0) { $found=1; $this->cache_objects[$modulepart.'_'.$id.'_'.$ref]='notfound'; } if ($result == 0) { $found=1; $this->cache_objects[$modulepart.'_'.$id.'_'.$ref]='notfound'; unset($filearray[$key]); }
} }
if (! $found > 0 || ! is_object($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) continue; // We do not show orphelins files if (! $found > 0 || ! is_object($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) continue; // We do not show orphelins files
@ -856,6 +856,7 @@ class FormFile
print "</td></tr>\n"; print "</td></tr>\n";
} }
} }
if (count($filearray) == 0) if (count($filearray) == 0)
{ {
print '<tr '.$bc[$var].'><td colspan="4">'; print '<tr '.$bc[$var].'><td colspan="4">';

View File

@ -542,22 +542,10 @@ class ImportCsv extends ModeleImports
// Define $listfields and $listvalues to build SQL request // Define $listfields and $listvalues to build SQL request
if ($listfields) { $listfields.=', '; $listvalues.=', '; } if ($listfields) { $listfields.=', '; $listvalues.=', '; }
$listfields.=$fieldname; $listfields.=$fieldname;
/*
field type detection was made before conversions so it can be wrong
if ($arrayrecord[($key-1)]['type'] < 0) $listvalues.=($newval=='0'?$newval:"null");
elseif ($arrayrecord[($key-1)]['type'] == 0) $listvalues.="''";
elseif ($arrayrecord[($key-1)]['type'] > 0) $listvalues.="'".$this->db->escape($newval)."'";
*/
/*
lines below replace lines above and are much simple
*/
if (!isset($newval)) $listvalues.="null";
elseif (empty($newval)) $listvalues.="''";
else $listvalues.="'".$this->db->escape($newval)."'";
/*
end of replace
*/
if (empty($newval) && $arrayrecord[($key-1)]['type'] < 0) $listvalues.=($newval=='0'?$newval:"null");
elseif (empty($newval) && $arrayrecord[($key-1)]['type'] == 0) $listvalues.="''";
else $listvalues.="'".$this->db->escape($newval)."'";
} }
$i++; $i++;
} }

View File

@ -224,27 +224,6 @@ class modProduct extends DolibarrModules
); );
} }
if (! empty($conf->stock->enabled))
{
// Import stocks
$r++;
$this->import_code[$r]=$this->rights_class.'_'.$r;
$this->import_label[$r]="Stocks"; // Translation key
$this->import_icon[$r]='stock';
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('ps'=>MAIN_DB_PREFIX.'product_stock');
$this->import_fields_array[$r]=array('ps.fk_product'=>"Product*",'ps.fk_entrepot'=>"Warehouse*",
'ps.reel'=>"Stock*",'ps.pmp'=>"PMP"
);
$this->import_convertvalue_array[$r]=array(
'ps.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'product'),
'ps.fk_entrepot'=>array('rule'=>'fetchidfromref','classfile'=>'/product/stock/class/entrepot.class.php','class'=>'Entrepot','method'=>'fetch','element'=>'label')
);
$this->import_examplevalues_array[$r]=array('ps.fk_product'=>"PREF123456",'ps.fk_entrepot'=>"ALM001",
'ps.reel'=>"10",'ps.pmp'=>"25"
);
}
} }

View File

@ -139,6 +139,7 @@ class modStock extends DolibarrModules
$r=0; $r=0;
// Import warehouses
$r++; $r++;
$this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_code[$r]=$this->rights_class.'_'.$r;
$this->import_label[$r]="Warehouses"; // Translation key $this->import_label[$r]="Warehouses"; // Translation key
@ -160,6 +161,23 @@ class modStock extends DolibarrModules
'e.description'=>"Central Warehouse",'e.lieu'=>"Central", 'e.description'=>"Central Warehouse",'e.lieu'=>"Central",
'e.address'=>"Route 66",'e.cp'=>'28080','e.fk_pays'=>'US', 'e.address'=>"Route 66",'e.cp'=>'28080','e.fk_pays'=>'US',
'e.statut'=>'1'); 'e.statut'=>'1');
// Import stocks
$r++;
$this->import_code[$r]=$this->rights_class.'_'.$r;
$this->import_label[$r]="Stocks"; // Translation key
$this->import_icon[$r]=$this->picto;
$this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('ps'=>MAIN_DB_PREFIX.'product_stock');
$this->import_fields_array[$r]=array('ps.fk_product'=>"Product*",'ps.fk_entrepot'=>"Warehouse*",'ps.reel'=>"Stock*",'ps.pmp'=>"PMP" );
$this->import_convertvalue_array[$r]=array(
'ps.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'product'),
'ps.fk_entrepot'=>array('rule'=>'fetchidfromref','classfile'=>'/product/stock/class/entrepot.class.php','class'=>'Entrepot','method'=>'fetch','element'=>'label')
);
$this->import_examplevalues_array[$r]=array('ps.fk_product'=>"PREF123456",'ps.fk_entrepot'=>"ALM001",'ps.reel'=>"10",'ps.pmp'=>"25"
);
} }
/** /**

View File

@ -494,7 +494,7 @@ class pdf_azur extends ModelePDFPropales
} }
// Show shipping date // Show shipping date
if (isset($object->type) && $object->type != 2 && $object->date_livraison) if ($object->date_livraison)
{ {
$outputlangs->load("sendings"); $outputlangs->load("sendings");
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
@ -508,7 +508,7 @@ class pdf_azur extends ModelePDFPropales
$posy=$pdf->GetY()+1; $posy=$pdf->GetY()+1;
} }
elseif (isset($object->type) && $object->type != 2 && ($object->availability_code || $object->availability)) // Show availability conditions elseif ($object->availability_code || $object->availability) // Show availability conditions
{ {
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
$pdf->SetXY($this->marge_gauche, $posy); $pdf->SetXY($this->marge_gauche, $posy);
@ -525,7 +525,7 @@ class pdf_azur extends ModelePDFPropales
} }
// Show payments conditions // Show payments conditions
if (! empty($conf->global->PROPALE_PDF_PAIEMENT_ENABLED) && ($object->cond_reglement_code || $object->cond_reglement)) if (empty($conf->global->PROPALE_PDF_HIDE_PAYMENTERMCOND) && ($object->cond_reglement_code || $object->cond_reglement))
{ {
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
$pdf->SetXY($this->marge_gauche, $posy); $pdf->SetXY($this->marge_gauche, $posy);
@ -541,10 +541,10 @@ class pdf_azur extends ModelePDFPropales
$posy=$pdf->GetY()+3; $posy=$pdf->GetY()+3;
} }
if (empty($conf->global->PROPALE_PDF_HIDE_PAYMENTERMCOND))
if (! empty($conf->global->PROPALE_PDF_PAIEMENT_ENABLED))
{ {
// Check a payment mode is defined // Check a payment mode is defined
/* Not required on a proposal
if (empty($object->mode_reglement_code) if (empty($object->mode_reglement_code)
&& ! $conf->global->FACTURE_CHQ_NUMBER && ! $conf->global->FACTURE_CHQ_NUMBER
&& ! $conf->global->FACTURE_RIB_NUMBER) && ! $conf->global->FACTURE_RIB_NUMBER)
@ -557,6 +557,7 @@ class pdf_azur extends ModelePDFPropales
$posy=$pdf->GetY()+1; $posy=$pdf->GetY()+1;
} }
*/
// Show payment mode // Show payment mode
if ($object->mode_reglement_code if ($object->mode_reglement_code

View File

@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/exports/class/export.class.php'; require_once DOL_DOCUMENT_ROOT.'/exports/class/export.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/modules/export/modules_export.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/export/modules_export.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$langs->load("exports"); $langs->load("exports");
@ -92,7 +93,8 @@ $array_selected=isset($_SESSION["export_selected_fields"])?$_SESSION["export_sel
$array_filtered=isset($_SESSION["export_filtered_fields"])?$_SESSION["export_filtered_fields"]:array(); $array_filtered=isset($_SESSION["export_filtered_fields"])?$_SESSION["export_filtered_fields"]:array();
$array_filtervalue=isset($_SESSION["export_FilterValue_fields"])?$_SESSION["export_FilterValue_fields"]:array(); $array_filtervalue=isset($_SESSION["export_FilterValue_fields"])?$_SESSION["export_FilterValue_fields"]:array();
$datatoexport=GETPOST("datatoexport"); $datatoexport=GETPOST("datatoexport");
$action=GETPOST("action"); $action=GETPOST('action', 'alpha');
$confirm=GETPOST('confirm', 'alpha');
$step=GETPOST("step")?GETPOST("step"):1; $step=GETPOST("step")?GETPOST("step"):1;
$export_name=GETPOST("export_name"); $export_name=GETPOST("export_name");
$hexa=GETPOST("hexa"); $hexa=GETPOST("hexa");
@ -108,6 +110,8 @@ $htmlother = new FormOther($db);
$formfile = new FormFile($db); $formfile = new FormFile($db);
$sqlusedforexport=''; $sqlusedforexport='';
$upload_dir = $conf->export->dir_temp.'/'.$user->id;
/* /*
* Actions * Actions
@ -272,6 +276,18 @@ if ($action == 'builddoc')
} }
} }
// Delete file
if ($step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes')
{
$file = $upload_dir . "/" . GETPOST('file'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
$ret=dol_delete_file($file);
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')));
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors');
header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport);
exit;
}
if ($action == 'deleteprof') if ($action == 'deleteprof')
{ {
if ($_GET["id"]) if ($_GET["id"])
@ -378,7 +394,7 @@ if ($step == 4 && $action == 'submitFormField')
foreach($array_filtered as $code=>$value) foreach($array_filtered as $code=>$value)
{ {
//print $code."=".$_POST[$objexport->array_export_fields[0][$code]]; //print $code."=".$_POST[$objexport->array_export_fields[0][$code]];
$objexport->array_export_FilterValue[0][$code] = $_POST[$objexport->array_export_fields[0][$code]]; $objexport->array_export_FilterValue[0][$code] = (isset($objexport->array_export_fields[0][$code])?$_POST[$objexport->array_export_fields[0][$code]]:'');
} }
$_SESSION["export_FilterValue_fields"]=(! empty($objexport->array_export_FilterValue[0])?$objexport->array_export_FilterValue[0]:''); $_SESSION["export_FilterValue_fields"]=(! empty($objexport->array_export_FilterValue[0])?$objexport->array_export_FilterValue[0]:'');
$array_filtervalue=(! empty($objexport->array_export_FilterValue[0])?$objexport->array_export_FilterValue[0]:''); $array_filtervalue=(! empty($objexport->array_export_FilterValue[0])?$objexport->array_export_FilterValue[0]:'');
@ -881,8 +897,10 @@ if ($step == 4 && $datatoexport)
$list=''; $list='';
foreach($array_filtered as $code=>$value) foreach($array_filtered as $code=>$value)
{ {
$list.=($list?', ':''); if (isset($objexport->array_export_fields[0][$code])) {
$list.="[".$langs->trans($objexport->array_export_fields[0][$code])."]='".$array_filtervalue[$code]."'"; $list.=($list?', ':'');
$list.="[".$langs->trans($objexport->array_export_fields[0][$code])."]='".(isset($array_filtervalue[$code])?$array_filtervalue[$code]:'')."'";
}
} }
print '<td>'.$list.'</td></tr>'; print '<td>'.$list.'</td></tr>';
} }
@ -1065,6 +1083,15 @@ if ($step == 5 && $datatoexport)
dol_fiche_head($head, $hselected, $langs->trans("NewExport")); dol_fiche_head($head, $hselected, $langs->trans("NewExport"));
/*
* Confirmation suppression fichier
*/
if ($action == 'remove_file')
{
$ret=$form->form_confirm($_SERVER["PHP_SELF"].'?step=5&datatoexport='.$datatoexport.'&file='.urlencode(GETPOST("file")), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1);
if ($ret == 'html') print '<br>';
}
print '<table width="100%" class="border">'; print '<table width="100%" class="border">';
// Module // Module
@ -1098,8 +1125,10 @@ if ($step == 5 && $datatoexport)
$list=''; $list='';
foreach($array_filtered as $code=>$value) foreach($array_filtered as $code=>$value)
{ {
$list.=($list?', ':''); if (isset($objexport->array_export_fields[0][$code])) {
$list.="[".$langs->trans($objexport->array_export_fields[0][$code])."]='".$array_filtervalue[$code]."'"; $list.=($list?', ':'');
$list.="[".$langs->trans($objexport->array_export_fields[0][$code])."]='".(isset($array_filtervalue[$code])?$array_filtervalue[$code]:'')."'";
}
} }
print '<td>'.$list.'</td></tr>'; print '<td>'.$list.'</td></tr>';
} }
@ -1153,7 +1182,7 @@ if ($step == 5 && $datatoexport)
// Affiche liste des documents // Affiche liste des documents
// NB: La fonction show_documents rescanne les modules qd genallowed=1, sinon prend $liste // NB: La fonction show_documents rescanne les modules qd genallowed=1, sinon prend $liste
$formfile->show_documents('export','',$conf->export->dir_temp.'/'.$user->id,$_SERVER["PHP_SELF"].'?step=5&datatoexport='.$datatoexport,$liste,1,(! empty($_POST['model'])?$_POST['model']:'csv'),1,1); $formfile->show_documents('export','',$upload_dir,$_SERVER["PHP_SELF"].'?step=5&datatoexport='.$datatoexport,$liste,1,(! empty($_POST['model'])?$_POST['model']:'csv'),1,1);
print '</td><td width="50%">&nbsp;</td></tr>'; print '</td><td width="50%">&nbsp;</td></tr>';
print '</table>'; print '</table>';

View File

@ -22,6 +22,6 @@
create table llx_categorie_fournisseur create table llx_categorie_fournisseur
( (
fk_categorie integer NOT NULL, fk_categorie integer NOT NULL,
fk_societe integer NOT NUL, fk_societe integer NOT NULL,
import_key varchar(14) import_key varchar(14)
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -1145,9 +1145,9 @@ else
print "</tr>\n"; print "</tr>\n";
// Signature // Signature
print '<tr><td valign="top">'.$langs->trans('Signature').'</td>'; print '<tr><td valign="top">'.$langs->trans('Signature').'</td><td>';
print '<td>'.$fuser->signature.'</td>'; print dol_textishtml($fuser->signature)?$fuser->signature:dol_nl2br($fuser->signature,1,true);
print "</tr>\n"; print "</td></tr>\n";
// Statut // Statut
print '<tr><td valign="top">'.$langs->trans("Status").'</td>'; print '<tr><td valign="top">'.$langs->trans("Status").'</td>';

View File

@ -126,16 +126,16 @@ class ExportTest extends PHPUnit_Framework_TestCase
{ {
global $conf,$user,$langs,$db; global $conf,$user,$langs,$db;
$sql = "SELECT f.facnumber as f_facnumber, f.amount as f_amount, f.total as f_total, f.tva as f_tva FROM ".MAIN_DB_PREFIX."facture f"; $sql = "SELECT f.facnumber as f_facnumber, f.total as f_total, f.tva as f_tva FROM ".MAIN_DB_PREFIX."facture f";
$objexport=new Export($db); $objexport=new Export($db);
//$objexport->load_arrays($user,$datatoexport); //$objexport->load_arrays($user,$datatoexport);
// Define properties // Define properties
$datatoexport='test'; $datatoexport='test';
$array_selected = array("f.facnumber"=>1, "f.amount"=>2, "f.total"=>3, "f.tva"=>4); $array_selected = array("f.facnumber"=>1, "f.total"=>2, "f.tva"=>3);
$array_export_fields = array("f.facnumber"=>"FacNumber", "f.amount"=>"FacAmount", "f.total"=>"FacTotal", "f.tva"=>"FacVat"); $array_export_fields = array("f.facnumber"=>"FacNumber", "f.total"=>"FacTotal", "f.tva"=>"FacVat");
$array_alias = array("f_facnumber"=>"facnumber", "f_amount"=>"amount", "f_total"=>"total", "f_tva"=>"tva"); $array_alias = array("f_facnumber"=>"facnumber", "f_total"=>"total", "f_tva"=>"tva");
$objexport->array_export_fields[0]=$array_export_fields; $objexport->array_export_fields[0]=$array_export_fields;
$objexport->array_export_alias[0]=$array_alias; $objexport->array_export_alias[0]=$array_alias;
@ -170,22 +170,23 @@ class ExportTest extends PHPUnit_Framework_TestCase
* *
* @return void * @return void
*/ */
/*
public function testExportFilteredExport() public function testExportFilteredExport()
{ {
global $conf,$user,$langs,$db; global $conf,$user,$langs,$db;
$sql = "SELECT f.facnumber as f_facnumber, f.amount as f_amount, f.total as f_total, f.tva as f_tva FROM ".MAIN_DB_PREFIX."facture f"; $sql = "SELECT f.facnumber as f_facnumber, f.total as f_total, f.tva as f_tva FROM ".MAIN_DB_PREFIX."facture f";
$objexport=new Export($db); $objexport=new Export($db);
//$objexport->load_arrays($user,$datatoexport); //$objexport->load_arrays($user,$datatoexport);
// Define properties // Define properties
$datatoexport='test'; $datatoexport='test_filtered';
$array_selected = array("f.facnumber"=>1, "f.amount"=>2, "f.total"=>3, "f.tva"=>4); $array_selected = array("f.facnumber"=>1, "f.total"=>2, "f.tva"=>3);
$array_export_fields = array("f.facnumber"=>"FacNumber", "f.amount"=>"FacAmount", "f.total"=>"FacTotal", "f.tva"=>"FacVat"); $array_export_fields = array("f.facnumber"=>"FacNumber", "f.total"=>"FacTotal", "f.tva"=>"FacVat");
$array_filtervalue = array("f.amount" => ">100"); $array_filtervalue = array("f.total" => ">100");
$array_filtered = array("f.amount" => 1); $array_filtered = array("f.total" => 1);
$array_alias = array("f_facnumber"=>"facnumber", "f_amount"=>"amount", "f_total"=>"total", "f_tva"=>"tva"); $array_alias = array("f_facnumber"=>"facnumber", "f_total"=>"total", "f_tva"=>"tva");
$objexport->array_export_fields[0]=$array_export_fields; $objexport->array_export_fields[0]=$array_export_fields;
$objexport->array_export_alias[0]=$array_alias; $objexport->array_export_alias[0]=$array_alias;
@ -213,7 +214,7 @@ class ExportTest extends PHPUnit_Framework_TestCase
$this->assertEquals($result,$expectedresult); $this->assertEquals($result,$expectedresult);
return true; return true;
} }*/
/** /**
* Test export function * Test export function

View File

@ -268,7 +268,7 @@ class FactureTest extends PHPUnit_Framework_TestCase
$result=$localobject->delete($id); $result=$localobject->delete($id);
print __METHOD__." id=".$id." result=".$result."\n"; print __METHOD__." id=".$id." result=".$result."\n";
$this->assertLessThan($result, 0); $this->assertGreaterThanOrEqual(0, $result);
return $result; return $result;
} }

View File

@ -10,46 +10,48 @@
processIsolation="false" processIsolation="false"
stopOnFailure="true" stopOnFailure="true"
syntaxCheck="true"> syntaxCheck="true">
<filter> <php>
<blacklist> <ini name="max_execution_time" value="600"/>
<directory suffix=".php">../../build/</directory> <ini name="max_input_time" value="600"/>
<directory suffix=".php">../../dev/</directory> </php>
<directory suffix=".php">../../doc/</directory> <filter>
<directory suffix=".php">../../test/</directory> <blacklist>
<directory suffix=".php">../../htdocs/core/menus/smartphone/</directory> <directory suffix=".php">../../build/</directory>
<directory suffix=".php">../../htdocs/products/canvas/</directory> <directory suffix=".php">../../dev/</directory>
<directory suffix=".php">../../htdocs/contact/canvas/</directory> <directory suffix=".php">../../doc/</directory>
<directory suffix=".php">../../htdocs/societe/canvas/</directory> <directory suffix=".php">../../test/</directory>
<directory suffix=".php">../../htdocs/includes/</directory> <directory suffix=".php">../../htdocs/core/menus/smartphone/</directory>
</blacklist> <directory suffix=".php">../../htdocs/products/canvas/</directory>
<whitelist addUncoveredFilesFromWhitelist="true"> <directory suffix=".php">../../htdocs/contact/canvas/</directory>
<directory suffix=".class.php">../../htdocs/</directory> <directory suffix=".php">../../htdocs/societe/canvas/</directory>
<directory suffix=".lib.php">../../htdocs/</directory> <directory suffix=".php">../../htdocs/includes/</directory>
<directory suffix=".inc.php">../../htdocs/</directory> </blacklist>
<directory suffix=".modules.php">../../htdocs/</directory> <whitelist addUncoveredFilesFromWhitelist="true">
<file>../../htdocs/core/modules/facture/modules_facture.php</file> <directory suffix=".class.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/commande/modules_commande.php</file> <directory suffix=".lib.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/propale/modules_propale.php</file> <directory suffix=".inc.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/project/modules_project.php</file> <directory suffix=".modules.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/fichinter/modules_fichinter.php</file> <file>../../htdocs/core/modules/facture/modules_facture.php</file>
<exclude> <file>../../htdocs/core/modules/commande/modules_commande.php</file>
<directory suffix=".php">../../build/</directory> <file>../../htdocs/core/modules/propale/modules_propale.php</file>
<directory suffix=".php">../../dev/</directory> <file>../../htdocs/core/modules/project/modules_project.php</file>
<directory suffix=".php">../../doc/</directory> <file>../../htdocs/core/modules/fichinter/modules_fichinter.php</file>
<directory suffix=".php">../../test/</directory> <exclude>
<directory suffix=".php">../../htdocs/core/menus/smartphone</directory> <directory suffix=".php">../../build/</directory>
<directory suffix=".php">../../htdocs/products/canvas/</directory> <directory suffix=".php">../../dev/</directory>
<directory suffix=".php">../../htdocs/contact/canvas/</directory> <directory suffix=".php">../../doc/</directory>
<directory suffix=".php">../../htdocs/societe/canvas/</directory> <directory suffix=".php">../../test/</directory>
<directory suffix=".php">../../htdocs/includes/</directory> <directory suffix=".php">../../htdocs/core/menus/smartphone</directory>
<file>../../htdocs/boutique/osc_master.inc.php</file> <directory suffix=".php">../../htdocs/products/canvas/</directory>
<file>../../htdocs/compta/bank/pre.inc.php</file> <directory suffix=".php">../../htdocs/contact/canvas/</directory>
<file>../../htdocs/compta/paiement/cheque/pre.inc.php</file> <directory suffix=".php">../../htdocs/societe/canvas/</directory>
<file>../../htdocs/holiday/common.inc.php</file> <directory suffix=".php">../../htdocs/includes/</directory>
<file>../../htdocs/ftp/pre.inc.php</file> <file>../../htdocs/boutique/osc_master.inc.php</file>
</exclude> <file>../../htdocs/compta/bank/pre.inc.php</file>
</whitelist> <file>../../htdocs/compta/paiement/cheque/pre.inc.php</file>
</filter> <file>../../htdocs/holiday/common.inc.php</file>
<ini name="max_execution_time" value="600"/> <file>../../htdocs/ftp/pre.inc.php</file>
<ini name="max_input_time" value="600"/> </exclude>
</whitelist>
</filter>
</phpunit> </phpunit>

View File

@ -10,48 +10,50 @@
processIsolation="false" processIsolation="false"
stopOnFailure="true" stopOnFailure="true"
syntaxCheck="true"> syntaxCheck="true">
<filter> <php>
<blacklist> <ini name="max_execution_time" value="600"/>
<directory suffix=".php">../../build/</directory> <ini name="max_input_time" value="600"/>
<directory suffix=".php">../../dev/</directory> </php>
<directory suffix=".php">../../doc/</directory> <filter>
<directory suffix=".php">../../test/</directory> <blacklist>
<directory suffix=".php">../../htdocs/core/menus/smartphone/</directory> <directory suffix=".php">../../build/</directory>
<directory suffix=".php">../../htdocs/custom/</directory> <directory suffix=".php">../../dev/</directory>
<directory suffix=".php">../../htdocs/products/canvas/</directory> <directory suffix=".php">../../doc/</directory>
<directory suffix=".php">../../htdocs/contact/canvas/</directory> <directory suffix=".php">../../test/</directory>
<directory suffix=".php">../../htdocs/societe/canvas/</directory> <directory suffix=".php">../../htdocs/core/menus/smartphone/</directory>
<directory suffix=".php">../../htdocs/includes/</directory> <directory suffix=".php">../../htdocs/custom/</directory>
</blacklist> <directory suffix=".php">../../htdocs/products/canvas/</directory>
<whitelist addUncoveredFilesFromWhitelist="true"> <directory suffix=".php">../../htdocs/contact/canvas/</directory>
<directory suffix=".class.php">../../htdocs/</directory> <directory suffix=".php">../../htdocs/societe/canvas/</directory>
<directory suffix=".lib.php">../../htdocs/</directory> <directory suffix=".php">../../htdocs/includes/</directory>
<directory suffix=".inc.php">../../htdocs/</directory> </blacklist>
<directory suffix=".modules.php">../../htdocs/</directory> <whitelist addUncoveredFilesFromWhitelist="true">
<file>../../htdocs/core/modules/facture/modules_facture.php</file> <directory suffix=".class.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/commande/modules_commande.php</file> <directory suffix=".lib.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/propale/modules_propale.php</file> <directory suffix=".inc.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/project/modules_project.php</file> <directory suffix=".modules.php">../../htdocs/</directory>
<file>../../htdocs/core/modules/fichinter/modules_fichinter.php</file> <file>../../htdocs/core/modules/facture/modules_facture.php</file>
<exclude> <file>../../htdocs/core/modules/commande/modules_commande.php</file>
<directory suffix=".php">../../build/</directory> <file>../../htdocs/core/modules/propale/modules_propale.php</file>
<directory suffix=".php">../../dev/</directory> <file>../../htdocs/core/modules/project/modules_project.php</file>
<directory suffix=".php">../../doc/</directory> <file>../../htdocs/core/modules/fichinter/modules_fichinter.php</file>
<directory suffix=".php">../../test/</directory> <exclude>
<directory suffix=".php">../../htdocs/core/menus/smartphone</directory> <directory suffix=".php">../../build/</directory>
<directory suffix=".php">../../htdocs/custom/</directory> <directory suffix=".php">../../dev/</directory>
<directory suffix=".php">../../htdocs/products/canvas/</directory> <directory suffix=".php">../../doc/</directory>
<directory suffix=".php">../../htdocs/contact/canvas/</directory> <directory suffix=".php">../../test/</directory>
<directory suffix=".php">../../htdocs/societe/canvas/</directory> <directory suffix=".php">../../htdocs/core/menus/smartphone</directory>
<directory suffix=".php">../../htdocs/includes/</directory> <directory suffix=".php">../../htdocs/custom/</directory>
<file>../../htdocs/boutique/osc_master.inc.php</file> <directory suffix=".php">../../htdocs/products/canvas/</directory>
<file>../../htdocs/compta/bank/pre.inc.php</file> <directory suffix=".php">../../htdocs/contact/canvas/</directory>
<file>../../htdocs/compta/paiement/cheque/pre.inc.php</file> <directory suffix=".php">../../htdocs/societe/canvas/</directory>
<file>../../htdocs/holiday/common.inc.php</file> <directory suffix=".php">../../htdocs/includes/</directory>
<file>../../htdocs/ftp/pre.inc.php</file> <file>../../htdocs/boutique/osc_master.inc.php</file>
</exclude> <file>../../htdocs/compta/bank/pre.inc.php</file>
</whitelist> <file>../../htdocs/compta/paiement/cheque/pre.inc.php</file>
</filter> <file>../../htdocs/holiday/common.inc.php</file>
<ini name="max_execution_time" value="600"/> <file>../../htdocs/ftp/pre.inc.php</file>
<ini name="max_input_time" value="600"/> </exclude>
</whitelist>
</filter>
</phpunit> </phpunit>