Envoi de bilan saisie sous forme numérique par le client

This commit is contained in:
Michael RICOIS 2011-01-28 09:20:15 +00:00
parent f69703dc2c
commit e42f1ac8ce
8 changed files with 289 additions and 5 deletions

View File

@ -0,0 +1,15 @@
CREATE TABLE `sdv1`.`bilansaisie` (
`ref` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`clientId` INT NOT NULL ,
`utilisateurId` INT NOT NULL ,
`utilisateurLogin` VARCHAR( 50 ) NOT NULL ,
`utilisateurEmail` VARCHAR( 100 ) NOT NULL ,
`siren` VARCHAR( 9 ) NOT NULL ,
`bilanCloture` VARCHAR( 10 ) NOT NULL ,
`bilanDuree` INT( 2 ) NOT NULL ,
`dateInsert` DATETIME NOT NULL
) ENGINE = MYISAM ;
ALTER TABLE `bilansaisie` ADD `method` VARCHAR( 20 ) NOT NULL AFTER `utilisateurEmail`;
ALTER TABLE `bilansaisie` ADD `confidentiel` INT( 1 ) NOT NULL AFTER `method`;

View File

@ -0,0 +1,194 @@
<?php
$siren = isset($_REQUEST['siren']) ? $_REQUEST['siren'] : '';
$ref = isset($_REQUEST['ref']) ? $_REQUEST['ref'] : '';
function setInformations($email, $method, $confidentiel, $siren, $bilanCloture, $bilanDuree){
$wdb = new WDB('sdv1');
$add = array(
'clientId' => $_SESSION['tabInfo']['idClient'],
'utilisateurId' => $_SESSION['tabInfo']['id'],
'utilisateurLogin' => $_SESSION['tabInfo']['login'],
'utilisateurEmail' => $email,
'method' => $method,
'confidentiel' => $confidentiel,
'siren' => $siren,
'bilanCloture' => $bilanCloture,
'bilanDuree' => $bilanDuree,
'dateInsert' => date('Y-m-d H:i:s'),
);
return $wdb->insert('bilansaisie', $add);
}
function getFilename($ref){
$wdb = new WDB('sdv1');
$result = $wdb->select('bilansaisie', '*', " ref='$ref'", true);
FB::log($result, 'result');
$item = $result[0];
return $item['ref'].'-'.$item['siren'];
}
if ( isset($_REQUEST['upload']) ){
if ( count($_FILES)==1 ){
$n = $_FILES['fichier']['name'];
$s = $_FILES['fichier']['size'];
$tmp_name = $_FILES['fichier']['tmp_name'];
//Vérifier que l'extension du fichier est bien correcte
$extValide = array('pdf', 'tiff');
$extension = strrchr($n,'.');
$extension = substr($extension,1);
FB::log($ref, 'ref');
if ( in_array($extension, $extValide) ){
//Lecture dans la bdd des informations
$name = getFilename($ref).'.'.$extension;
if ( move_uploaded_file($tmp_name, PATH_DATA.'/bilanclient/'.$name) ){
echo '<br/>Fichier: <a href="./servefile.php?q=bilanclient/'.
$name.'" target="_blank">'.$name.'</a> ('.$s.' octets)';
echo '<br/><i>Cliquer pour vérifier votre fichier.</i>';
} else {
echo "<br/>Erreur lors de l'envoi du fichier!";
}
} else {
echo "Extension de fichier invalide.";
}
} else {
echo "<br/>Erreur.";
}
exit;
}
if ( isset($_REQUEST['method']) ){
//Obtention de la référence et enregistrement dans la bdd
$email = $_REQUEST['email'];
$method = $_REQUEST['method'];
$siren = $_REQUEST['siren'];
$bilanCloture = $_REQUEST['dateCloture'];
$bilanDuree = $_REQUEST['dureeExercice'];
$confidentiel = $_REQUEST['confidentiel'];
$valideField = true;
if ( empty($email)) {
$valideField = false;
}
if ( empty($method)) {
$valideField = false;
}
if ( empty($siren)) {
$valideField = false;
}
if ( empty($bilanCloture) &&
!preg_match('/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}/', $bilanCloture) ){
$valideField = false;
}
if ( empty($bilanDuree)) {
$valideField = false;
}
if ( $valideField ){
FB::info('Formulaire valide');
$ref = setInformations($email, $method, $confidentiel, $siren, $bilanCloture, $bilanDuree);
if ( $ref ){
FB::info('Affichage suite');
?>
Votre référence : BS<?=$ref?>
<br/><br/>
<?php
// Affichage du formulaire pour l'upload
if ( $method=='fichier' ){
?>
<style>
#progressbar { border:none; }
.ui-progressbar-value { background-image: url(img/pbar-ani.gif); }
</style>
<form id="uploadForm" name="uploadForm" action="./?page=bilanclient" method="POST" enctype="multipart/form-data">
<input type="hidden" name="siren" value="<?=$siren?>" />
<input type="hidden" name="ref" value="<?=$ref?>" />
<input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
Votre fichier : <input type="file" name="fichier" />
<input type="submit" name="upload" value="Envoyer" />
</form>
<div id="progressbar"></div>
<div id="uploadOutput"></div>
<script type="text/javascript" src="js/jquery.form.js">
</script type="text/javascript">
<script>
$('#uploadForm').ajaxForm({
beforeSubmit: function() {
$('#progressbar').progressbar({value: 100});
$('#uploadOutput').html('Envoi en cours...');
},
success: function(data) {
$('#progressbar').progressbar('destroy');
$('#uploadOutput').html('<strong>' + data + '</strong>');
}
});
$('#dialogbilanclient').dialog({ buttons: [ {
text: "Quitter",
click: function() { $(this).dialog("close"); }
} ] });
</script>
<?php
exit;
}
// Affichage des informations pour le courrier
if ( $method=='courrier' ){
?>
Merci d'envoyer votre courrier à l'adresse suivante :<br/>
Scores & Décisions,<br/>
Service Production, BS<?=$ref?><br/>
19 rue de Clairefontaine,<br/>
78120 Rambouillet
<?php
exit;
}
}
} // Fin validation formulaire
} // Fin controle soumission formulaire
?>
<form id="formEnvoiBilan" name="formEnvoiBilan" method="post" action="./?page=bilanclient">
<input type="hidden" name="siren" value="<?=$siren?>" />
<label>Votre email :</label>
<input type="text" name="email" size="40" value="<?=$_SESSION['tabInfo']['email']?>">
<br/><br/>
<label>Date de clôture du bilan : </label>
<input type="text" name="dateCloture" value="" size="10" maxlength="10" id="datepicker">
(JJ/MM/AAAA)
<br/><br/>
<label>Durée de l'exercice (en mois) : </label>
<select name="dureeExercice">
<?php
for ( $i=0; $i<23; $i++){
$select = '';
if ($i==11) $select = 'selected';
?>
<option value="<?=$i+1?>" <?=$select?>><?=$i+1?></option>
<?php
}
?>
</select>
<br/><br/>
<label>Confidentialité : </label><br/>
<input type="radio" name="confidentiel" value="0" checked>
Ce bilan n'est pas confidentiel (saisie gratuite)
<br/>
<input type="radio" name="confidentiel" value="1">
Ce bilan est confidentiel et ne doit être utilisé que pour les utilisateurs
de votre société (+5 HT par bilan saisit)
<br/><br/>
<label>Mode d'envoi du bilan : </label><br/>
<input type="radio" name="method" value="fichier" checked>
Instantané par le site : envoi du bilan au format numérique
<br/>
<input type="radio" name="method" value="courrier">
Par courrier
<br/><br/>
<span><i>
Vous obtiendrez une référence à l'étape suivante avec au choix
l'adresse de Scores & Décisions ou la possibilité d'envoyer votre bilan au
format numérique (PDF, TIFF)
</i></span>
</form>
<script type="text/javascript">
$('#datepicker').datepicker( $.datepicker.regional['fr'] );
$('#datepicker').datepicker( "option", "dateFormat", 'dd/mm/yy' );
$('#datepicker').datepicker( "option", "defaultDate", '31/12/<?=date('Y')-1?>' );
</script>

View File

@ -0,0 +1,10 @@
<?php
// return text var_dump for the html request
echo "VAR DUMP:<p />";
var_dump($_POST);
foreach($_FILES as $file) {
$n = $file['name'];
$s = $file['size'];
if (!$n) continue;
echo "File: $n ($s bytes)";
}

View File

@ -75,8 +75,6 @@ switch ($action)
case 'export':
require_once realpath(dirname(__FILE__)).'/liassexls.php';
exit; break;
default :
break;
}

View File

@ -513,6 +513,9 @@ switch ($page)
$page2 = 'bdf.php';
require_once realpath(dirname(__FILE__)).'/pages/main.php';
break;
case 'bilanclient':
require_once 'liasse/bilanclient.php';
exit; break;
case 'main':
require_once realpath(dirname(__FILE__)).'/pages/main.php';
break;

View File

@ -14,4 +14,43 @@ $(document).ready(function()
objet.html(data);
});
});
});
$('#bilanClient').live('click', function(e){
e.preventDefault();
var url = $(this).attr('href');
var title = $(this).attr('title');
var dialogOpts = {
bgiframe: true,
title: title,
width: 500,
height: 400,
modal: true,
open: function(event, ui) {
$(this).html('Chargement...');
$(this).load(url);
},
buttons: {
Valider: function() { formEnvoiBilanSubmit(); },
Annuler: function() { $(this).dialog('close'); }
},
close: function() { $('#dialogbilanclient').remove(); }
};
$('<div id="dialogbilanclient"></div>').dialog(dialogOpts);
return false;
});
});
function formEnvoiBilanSubmit(){
var url = $('#formEnvoiBilan').attr('action');
$.post(url, $('#formEnvoiBilan').serialize(),
function (data, textStatus) {
if (textStatus!='success'){
$('#dialogbilanclient').html('Erreur');
} else {
$('#dialogbilanclient').html(data);
}
}
);
}

View File

@ -18,14 +18,15 @@ FB::log($tabBilan, 'Bilan');
<tr>
<td width="30">&nbsp;</td>
<td width="200" class="StyleInfoLib">Num&eacute;ro identifiant Siren</td>
<td width="350" class="StyleInfoData"><?=substr($siren,0,3).' '.substr($siren,3,3).' '.substr($siren,6,3)?></td>
<td width="350" class="StyleInfoData">
<?=substr($siren,0,3).' '.substr($siren,3,3).' '.substr($siren,6,3)?>
</td>
</tr>
<tr>
<td width="30">&nbsp;</td>
<td width="200" class="StyleInfoLib">Raison Sociale</td>
<td width="350" class="StyleInfoData"><?=$raisonSociale?></td>
</tr>
<?php
if (count($tabBilans)>0)
{
@ -121,6 +122,21 @@ if( isset($_REQUEST['mil'])
</tr>
<?php
}
//Envoi d'un bilan de la part du client
if ( $_SESSION['tabInfo']['idClient']==1 ){
?>
<tr>
<td width="30">&nbsp;</td>
<td colspan="2">
<a id="bilanClient" href="./?page=bilanclient&siren=<?=$siren?>"
title="Envoi du bilan">
Vous possèdez un bilan plus récent</a>
</a>
</td>
</tr>
<?php
}
?>
</table>
</form>

View File

@ -50,6 +50,15 @@ switch ( $type ) {
$content_type = 'application/vnd.ms-excel';
$path = PATH_SITE.'/cache/liasse/';
break;
case 'bilanclient':
$explode = explode('.', $file);
switch ($explode[1]) {
case 'pdf' : $content_type = 'application/pdf'; break;
case 'jpeg':
case 'jpg' : $content_type = 'image/jpeg'; break;
}
$path = PATH_DATA.'/bilanclient/';
break;
default:
exit;
break;