2010-09-28 13:01:37 +00:00

541 lines
14 KiB
PHP

<?php
require_once 'common/dates.php';
require_once 'dbbootstrap.php';
require_once realpath(dirname(__FILE__)).'/constantes.php';
require_once realpath(dirname(__FILE__)).'/infogreffews.php';
/**
* Recherche les commandes suivant le numéro de commande et/ou le siren
* @param unknown_type $type
* @param $siren
* @param $num
*/
function commandesRecherche($num, $siren, $type = '-'){
setDbConn('sdv1');
$q = Doctrine_Query::create();
//Recherche par numéro de commande
if (!empty($num)){
$table = tableNumCommande($num);
$identifiant = identifiantTable($table);
$q->from($table)->where($identifiant.' = ?', substr($num,1));
if (!hasModeEdition()){
$q->andWhere('login = ?', $_SESSION['tabInfo']['login']);
}
$commandes = $q->execute();
$outputCommandes = array();
foreach ($commandes as $commande){
if (filtreIdentifiantCommande($num, $commande)){
$outputCommandes[] = $commande;
}
}
//Recherche par numéro siren et type de commande
} elseif (!empty($siren)) {
$table = tableTypeCommande($type);
$q->from($table)->where('siren = ?', $siren);
if (!hasModeEdition()){
$q->andWhere('login = ?', $_SESSION['tabInfo']['login']);
}
}
$commandes = $q->execute();
//Résultat
return $commandes;
}
function filtrage(){
}
function filtreIdentifiantCommande($num, $commande){
$return = false;
switch(substr($num,0,1)){
case 'G':
if ($commande->typeCommande == 'G' ||
$commande->typeCommande == ''){
$return = true;
}
break;
case 'C':
if ($commande->typeCommande == 'C'){
$return = true;
}
break;
}
return $return;
}
function filtreTypeCommande($type, $ref){
$return = false;
switch($type){
case 'greffe-actes':
if (preg_match('/^([0-9a-zA-Z]{2}-).*?$/', $ref, $matches)){
$return = true;
}
break;
case 'greffe-bilans':
if (preg_match('/^([0-9]{4}_).*?$/', $ref, $matches)){
$return = true;
}
break;
case 'greffe-kbis':
break;
case 'greffe-priv':
break;
}
return $return;
}
function tableNumCommande($num){
switch(substr($num,0,1)){
case 'G':
case 'C':
$table = 'Commandes';
break;
}
return $table;
}
function identifiantTable($nomTable){
switch($nomTable){
case 'Commandes':
$identifiant = 'idCommande';
break;
case 'CommandesPieces':
$identifiant = 'id';
break;
case 'CommandesKbis':
$identifiant = 'id';
break;
}
return $identifiant;
}
function tableTypeCommande($type){
switch($type){
case 'greffe-actes':
case 'greffe-bilans':
$table = 'Commandes';
break;
case 'greffe-kbis':
$table = 'CommandesKbis';
break;
case 'greffe-priv':
$table = 'CommandesPieces';
break;
}
return $table;
}
function documentLib($ref, $info, $type){
global $typeActes;
$lib = 'Inconnu';
switch($type){
case 'greffe':
if (preg_match('/^([0-9a-zA-Z]{2}-).*?$/', $ref, $matches)){
if (substr($ref,0,3)=='ST-'){
$lib = 'DERNIER STATUS &Agrave; JOUR';
} else {
$explodedRef = explode('-', $ref);
$date = new WDate();
$dateref = $date->dateT('Ymd','d/m/Y',$explodedRef[1]);
$depot = ', Dépôt n°'.$explodedRef[6].' au '.$dateref;
$lib = $typeActes['a'.substr($ref,0,2)].$depot;
}
} elseif (preg_match('/^([0-9]{4}).*?$/', $ref, $matches)){
$lib = 'Bilan de '.$matches[1];
}
break;
}
return $lib;
}
function documentInfo($ref, $info, $type){}
function documentFilename($siren, $ref, $type){
$filename = '';
switch($type){
case 'greffe':
if (preg_match('/^([0-9a-zA-Z]{2}-).*?$/', $ref, $matches)){
$filename = infogreffe_acte_filename($siren, $ref);
} elseif (preg_match('/^([0-9]{4}).*?$/', $ref, $matches)){
$filename = infogreffe_bilan_filename($siren, $ref);
}
break;
}
return $filename;
}
function documentLienExtranet($siren, $ref, $type){
$lien = '#';
switch($type){
case 'greffe':
if (preg_match('/^([0-9a-zA-Z]{2}-).*?$/', $ref, $matches)){
$lien = './?page=greffes&vue=actes&siret='.$siren;
FB::log('');
} elseif (preg_match('/^([0-9]{4}).*?$/', $ref, $matches)){
$lien = './?page=greffes&vue=bilans&siret='.$siren;
}
break;
}
return $lien;
}
function documentStatut($commande){
$statut = 'En cours...';
if ($commande->dateReception != '0000-00-00 00:00:00'){
$statut = 'Envoyé';
}
if ($commande->statutCommande==9 &&
$commande->dateReception=='0000-00-00 00:00:00'){
$statut = 'Erreur';
}
return $statut;
}
/**
*
* @param unknown_type $type
* @param unknown_type $etat
* @param unknown_type $date
*/
function commandesListe($type, $etat, $date, $mode = ''){
setDbConn('sdv1');
$table = tableTypeCommande($type);
$dateTDebut = mktime(0, 0, 0, date('m', $date), 1, date('Y', $date));
$dateDebut = date('Y-m',$dateTDebut);
$q = Doctrine_Query::create()
->from($table)
->Where('dateCommande LIKE ? ', $dateDebut.'%');
if (preg_match('/([A-Z])-([0-9]{1,})/', $etat, $matches)){
$q->andWhere('statutCommande = ?', $matches[2]);
} else {
switch($etat){
case 'commande':
$q->andWhere('statutCommande != ?', 9);
$q->andWhere('dateReception = ?', '0000-00-00 00:00:00');
break;
case 'reception':
$q->andWhere('dateReception != ?', '0000-00-00 00:00:00');
break;
case 'erreur':
$q->andWhere('statutCommande = ?', 9);
$q->andWhere('dateReception = ?', '0000-00-00 00:00:00');
break;
}
}
if ( $mode!='-' ){
if ( $mode == 'G' ) {
$q->andWhereIn('typeCommande', array('', $mode));
} else {
if ( $table == 'CommandesKbis' || $table == 'CommandesPieces' ){
$q->andWhere('type = ?', $mode);
} else {
$q->andWhere('typeCommande = ?', $mode);
}
}
}
if ( !hasModeEdition() ){
$q->andWhere('login = ?', $_SESSION['tabInfo']['login']);
}
FB::log($q->getSqlQuery(), 'QUERY');
FB::log($q->getFlattenedParams(), 'PARAMS');
//Résultat
$commandes = $q->execute();
return $commandes;
}
function listStatus(){
$q = Doctrine_Query::create()
->from('CommandesStatut')
->where('typeCommande = ?', 'C')
->orderBy('ordre ASC');
$cStatuts = $q->execute();
return $cStatuts;
}
/**
* Retourne la raison sociale à partir du siren
* @param unknown_type $siren
*/
function raisonSociale($siren){
global $client;
$rs = '<a href="./?page=saisieajax&q=greffescmd/rs" alt="'.$siren.
'" class="rs">Obtenir la raison sociale</a>';
return $rs;
}
/**
* Retourne le contenu HTML pour l'affichage de la commande
* @param array $commande
* @param array $type
*/
function afficheCommande($commande, $type){
static $compteur = 0;
$output = '';
switch ($type) {
/*
* Traitement de l'affichage des kbis par email ou courrier
*/
case 'greffe-kbis':
FB::log($commande->id, 'commande');
$colspan = 3;
// Affichage
if ($compteur%2){
$class = ' even';
}else{
$class = ' odd';
}
$compteur++;
// Formulaire pour modifier l'état d'une commande courrier S&D
$contenuEtat = '';
if ( $commande->type=='C' && hasModeEdition() ){
$contenuEtat.= '<a href="./?page=saisieajax&q=gencourrier/K'.
$commande->id.'"target="_blank">Générer le courrier</a>';
}
if ( ($commande->type=='C' || $commande->type='M') &&
hasModeEdition() ){
$cStatuts = listStatus();
$contenuEtat.= '<div>' .
'<label>Changer l\'état : </label>' .
'<select class="changeEtatC" name="Etat'.$commande->id.'">';
if($commande->statutCommande == 0){
$contenuEtat.='<option value="0">Non traité</option>';
}
foreach ($cStatuts as $cStatut)
{
$selected = '';
//Selection du statut en cours
if($cStatut->id == $commande->statutCommande)
{
$selected = 'selected';
}
$contenuEtat.= '<option value="'.
'K'.$commande->id.'-'.$cStatut->id.'" '.
$selected.'>'.$cStatut->libStatut.'</option>';
}
$contenuEtat.= '</select></div>';
$colspan = 1;
}
// Fin formulaire
$output = '<tr class="un'.$class.'">'.
'<td style="vertical-align:bottom;" colspan="'.$colspan.'">'.
'<b>K' . $commande->id . '</b>' .
'</td>';
if ($colspan == 1){
$output.= '<td colspan="2">' . $contenuEtat . '</td>';
}
$output.= '</tr>';
$output.= '<tr class="deux'.$class.'">'.
' <td>'.
' <div><a href="./?page=identite&siret='.$commande->siren.'" target="_blank">'.
$commande->siren.'</a></div>'.
' <div><b>'.$commande->raisonSociale.'</b></div>'.
' </td>'.
' <td>';
if ( $commande->type=='C' ) {
$output.= 'Commmande de kbis original par courrier.';
//Affichage de l'adresse
$adresseKbis = strtoupper($commande->societe) . '<br/>' .
$commande->nom . '<br/>' .
$commande->adresse . '<br/>' .
$commande->cp . '&nbsp;' . $commande->ville;
$output.= '<br/>'.$adresseKbis;
} elseif ( $commande->type=='M' ) {
$output.= 'Commmande de kbis par email.';
}
$output.= ' </td>';
$date = new WDate();
$dateCommande = $date->dateT('Y-m-d','d/m/Y',substr($commande->dateCommande,0,10));
$dateReception = $date->dateT('Y-m-d','d/m/Y',substr($commande->dateReception,0,10));
$output.= ' <td>'.
' <div>Email : '.$commande->email.'</div>'.
' <div>Etat : ' . '' . '</div>'.
' <div>Date de commande : '.$dateCommande.'</div>'.
' <div>Date de reception : '.$dateReception.'</div>'.
' </td>'.
'</tr>';
break;
case 'greffe-bilans';
case 'greffe-actes':
if ($type!='-' && filtreTypeCommande($type, $commande->refDocument)){
if ($commande->typeCommande=='' || $commande->typeCommande=='G'){
$typeCommande = 'G';
} elseif ($commande->typeCommande=='C'){
$typeCommande = 'C';
}
$documentLib = documentLib(
$commande->refDocument,
$commande->libDocument,
'greffe');
$colspan = 3;
/*
* Lien pour placer une erreur sur la commande en mode edition
*/
$contenuLien = '';
if ($commande->statutCommande!=9 &&
$commande->dateReception=='0000-00-00 00:00:00' &&
hasModeEdition()){
$contenuLien.= '<div>'.
'<a class="changeEtat" title="Erreur sur la commande" target="_blank" '.
'href="./?page=saisieajax&q=greffescmd/erreur/'.$commande->idCommande.'">'.
'Placer cette commande en erreur'.
'</a>'.
'</div>';
$colspan = 1;
}
/*
* Formulaire pour modifier l'état d'une commande courrier S&D
*/
$contenuEtat = '';
if ($typeCommande=='C' && hasModeEdition()){
$cStatuts = listStatus();
$contenuEtat.= '<div>' .
'<label>Changer l\'état : </label>' .
'<select class="changeEtatC" name="Etat'.$commande->idCommande.'">';
if($commande->statutCommande == 0)
{
$contenuEtat.='<option value="0">Non traité</option>';
}
foreach ($cStatuts as $cStatut)
{
$selected = '';
//Selection du statut en cours
if($cStatut->id == $commande->statutCommande)
{
$selected = 'selected';
}
//Ne pas afficher les états précedents et les états suivant +2
if( $cStatut->ordre == $commande->statutCommande ||
$cStatut->ordre == $commande->statutCommande+1 ){
$contenuEtat.= '<option value="'.
'C'.$commande->idCommande.'-'.$cStatut->id.'" '.
$selected.'>'.$cStatut->libStatut.'</option>';
}
}
$contenuEtat.= '</select></div>';
$contenuEtat.= '<a href="./?page=saisieajax&q=gencourrier/C'.
$commande->idCommande.'"target="_blank">Générer le courrier</a>';
}
/*
* Affichage
*/
if ($compteur%2){
$class = ' even';
}else{
$class = ' odd';
}
$compteur++;
$output = '<tr class="un'.$class.'">'.
'<td style="vertical-align:bottom;" colspan="'.$colspan.'">'.
'<b>' . $typeCommande . $commande->idCommande . '</b>' .
'</td>';
if ($colspan == 1){
$output.= '<td colspan="2">'.$contenuLien . $contenuEtat.'</td>';
}
$output.= '</tr>';
$hrefExtranet = documentLienExtranet($commande->siren, $commande->refDocument, 'greffe');
$output.= '<tr class="deux'.$class.'">'.
' <td>'.
' <div><a href="'.$hrefExtranet.'" target="_blank">'.
$commande->siren.'</a></div>'.
' <div>'.raisonSociale($commande->siren).'</div>'.
' </td>'.
' <td>'.
' <div><u>Document :</u> '.$documentLib.'</div>'.
' <div>Informations : '.$commande->libDocument.'</div>';
/* Affichage du lien vers le document pdf - en mode edition et si la
* date de reception est de moins d'un mois pour les clients
*/
$filename = documentFilename(
$commande->siren,
$commande->refDocument,
'greffe');
if (hasModeEdition()){
if (file_exists(PATH_DATA.'/pdf/'.$filename)){
$output.= '<div><a href="./pdf/'.$filename.'">'.
'Document disponible</a></div>';
}
} elseif ($commande->dateReception != '0000-00-00 00:00:00'){
$dateMoinsMois = mktime(0, 0, 0,
date('m')-1,
date('d'),
date('Y'));
$dateReception = mktime(0, 0, 0,
substr($commande->dateReception,4,2),
substr($commande->dateReception,6,2),
substr($commande->dateReception,0,4));
if ($dateMoinsMoins>$dateReception){
if (file_exists(PATH_DATA.'/pdf/'.$filename)){
$output.= '<div><a href="./pdf/'.$filename.'">'.
'Télécharger le fichier de votre commande</a></div>';
} else {
$output.= '<div>Erreur : Le fichier n\'a pas été trouvé.</div>';
}
} else {
$output.= '<div>Consulter les pièces pour afficher le document</div>';
}
}
/*
* Affichage du commentaire d'erreur sur la commande
*/
if ($commande->statutCommande==9){
$output.=
'<div>'.
'Erreur sur la commande : '.$commande->commentaire.
'</div>';
}
$date = new WDate();
$dateCommande = $date->dateT('Y-m-d','d/m/Y',substr($commande->dateCommande,0,10));
$dateReception = $date->dateT('Y-m-d','d/m/Y',substr($commande->dateReception,0,10));
$output .= ' </td>'.
' <td>'.
' <div>Email : '.$commande->emailCommande.'</div>'.
' <div>Etat : '.documentStatut($commande).'</div>'.
' <div>Date de commande : '.$dateCommande.'</div>'.
' <div>Date de reception : '.$dateReception.'</div>'.
' </td>'.
'</tr>';
}
break;
}
return $output;
}