2011-08-22 12:25:12 +00:00
< ? php
class GenCourrier
{
protected $format = 'odt' ;
protected $path = '' ;
protected $info = null ;
2011-08-22 13:30:32 +00:00
public function __construct ( $numCommande )
2011-08-22 12:25:12 +00:00
{
$config = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/configuration.ini' , 'path' );
$this -> path = realpath ( $config -> data ) . '/courrier/' ;
$this -> info = new stdClass ();
$this -> info -> ref = $numCommande ;
}
public function setInfosCommande ()
{
$typeCommande = substr ( $this -> info -> ref , 0 , 1 );
$id = substr ( $this -> info -> ref , 1 );
if ( $typeCommande == 'C' ) {
$dbConfig = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/databases.ini' );
$db = Zend_Db :: factory ( $dbConfig -> db -> sdv1 );
$commande = new Application_Model_Commandes ( $db );
$sql = $commande -> select ()
-> where ( 'idCommande = ?' , $id )
-> where ( 'typeCommande = ?' , 'C' );
$result = $commande -> fetchRow ( $sql );
if ( preg_match ( '/^([0-9]{4}_).*?$/' , $result -> refDocument , $matches )) {
$typeDocument = 'bilans' ;
} else {
$typeDocument = 'actes' ;
}
$this -> info -> refDocument = $result -> refDocument ;
$this -> info -> libDocument = $result -> libDocument ;
} else if ( $typeCommande == 'K' ) {
$dbConfig = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/databases.ini' );
$db = Zend_Db :: factory ( $dbConfig -> db -> sdv1 );
$commande = new Application_Model_CommandesKbis ( $db );
$sql = $commande -> select ()
-> where ( 'id = ?' , $id );
$result = $commande -> fetchRow ( $sql );
$typeDocument = 'kbis' ;
}
//Assignation des variables
$this -> info -> siren = $result -> siren ;
$this -> info -> typeDocument = $typeDocument ;
}
public function setInfosIdentite ()
{
2011-08-22 13:30:32 +00:00
require_once 'Scores/WsScores.php' ;
2011-08-22 12:25:12 +00:00
$ws = new WsScores ();
$reponse = $ws -> getIdentite ( $this -> info -> siren , 0 );
$this -> info -> commune = $reponse -> codeCommune ;
$this -> info -> dept = $reponse -> Dept ;
$this -> info -> siret = $reponse -> Siret ;
$this -> info -> numRC = $reponse -> NumRC ;
//$info->siren = substr($siren, 0, 3).' '.substr($siren, 3, 3).' '.substr($siren, 6, 3);
$this -> info -> nom = htmlspecialchars_decode ( $reponse -> Nom , ENT_QUOTES );
$this -> info -> adresse = htmlspecialchars_decode ( $reponse -> Adresse , ENT_QUOTES ) . ' ' ;
if ( empty ( $reponse -> Adresse2 ) == false ) {
$info -> adresse .= $reponse -> Adresse2 . ' ' ;
}
$this -> info -> adresse .= " \n " . $reponse -> CP . ' ' . $reponse -> Ville ;
}
public function setInfosTribunal ()
{
// Adresse du tribunal de commerce
require_once 'Scores/WsScores.php' ;
2011-08-22 13:30:32 +00:00
$ws = new WsScores ();
2011-08-22 12:25:12 +00:00
$reponse = $ws -> getListeCompetences ( $this -> info -> siret , 'tri' , $this -> info -> dept . $this -> info -> commune );
$tribunalLib = $reponse -> result -> item [ 0 ] -> Nom ;
if ( preg_match ( '/(A|B|C|D)/i' , $this -> info -> numRC )) {
$libTrib = ' RCS ' .
preg_replace ( '/(^TC |^TI |^TGIcc |^TMX )/i' , '' , $tribunalLib );
} else if ( preg_match ( '/(P)/i' , $this -> info -> numRC )) {
$libTrib = ' RSAC ' .
preg_replace ( '/(^TC |^TI |^TGIcc |^TMX )/i' , '' , $tribunalLib );
}
$this -> info -> tribunalCode = $reponse -> result -> item [ 0 ] -> Code ;
$info -> libTrib = $libTrib ;
$info -> tribunal = $reponse -> result -> item [ 0 ];
}
public function setTarifs ()
{
$dbConfig = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/databases.ini' );
$db = Zend_Db :: factory ( $dbConfig -> db -> sdv1 );
$tarifs = new Application_Model_CommandesTarifs ( $db );
$sql = $tarifs -> select () -> where ( 'codeTribunal = ?' , $this -> info -> tribunalCode )
-> where ( 'type = ?' , $this -> info -> typeDocument )
2011-08-22 13:30:32 +00:00
-> where ( 'annee = ?' , date ( 'Y' ));
$result = $tarifs -> fetchAll ( $sql ) -> toArray ();
2011-08-22 12:25:12 +00:00
if ( count ( $result ) == 0 ) {
echo 'Commande ' . $this -> info -> ref . ' - Pas de tarifs défini pour le tribunal ' .
$this -> info -> tribunal -> Nom . ' (' . $this -> info -> tribunalCode . ')' ;
exit ;
}
$this -> info -> prix = number_format ( $result [ 0 ][ 'prix' ], 2 , ',' , ' ' );
$this -> info -> enveloppe = $result [ 0 ][ 'enveloppe' ];
}
protected function setDestinataire ()
{
// Destinataire
$this -> info -> destinataire = " REGISTRE DU COMMERCE - GREFFE \n " .
$this -> normaliseVoie ( trim ( $this -> info -> tribunal -> Adr )) . " \n " .
$this -> normaliseVoie ( $this -> info -> tribunal [ 'AdrComp' ]) . " \n " .
$this -> info -> tribunal [ 'CP' ] . ' ' . $this -> info -> tribunal [ 'Ville' ] . " \n " ;
}
protected function setSujet ()
{
// Type de document demandé (actes ou bilans pour l'instant)
// [un Kbis / l'état d'endettement / la copie de jugement de XXX en date du XXX]
2011-08-22 13:30:32 +00:00
if ( $this -> info -> typeDocument == 'bilans' ) {
2011-08-22 12:25:12 +00:00
preg_match ( '/^[0-9]{4}_.*?-([0-9]{8}).*?/' , $this -> info -> refDocument , $matches );
$this -> info -> sujet = 'une copie du bilan au ' .
substr ( $matches [ 1 ], 6 , 2 ) . '/' .
substr ( $matches [ 1 ], 4 , 2 ) . '/' .
substr ( $matches [ 1 ], 0 , 4 );
2011-08-22 13:30:32 +00:00
} else if ( $this -> info -> typeDocument == 'actes' ) {
2011-08-22 12:25:12 +00:00
$this -> info -> sujet = 'une copie de l\'acte ' .
$typeActes [ 'a' . substr ( $this -> info -> refDocument , 0 , 2 )];
2011-08-22 13:30:32 +00:00
if ( empty ( $this -> info -> libDocument ) == false ) {
2011-08-22 12:25:12 +00:00
$this -> info -> sujet .= ' (' . $this -> info -> libDocument . ')' ;
}
$this -> info -> sujet .= ' en date du ' .
substr ( $this -> info -> refDocument , 9 , 2 ) . '/' .
substr ( $this -> info -> refDocument , 7 , 2 ) . '/' .
substr ( $this -> info -> refDocument , 3 , 4 );
2011-08-22 13:30:32 +00:00
} else if ( $this -> info -> typeDocument == 'kbis' ) {
2011-08-22 12:25:12 +00:00
$this -> info -> sujet = 'un extrait RCS' ;
}
}
protected function setSociete ()
{
// Societe
2011-08-22 13:30:32 +00:00
$this -> info -> societe = $this -> info -> nom . " \n " . '( ' . $this -> info -> siren . $this -> info -> libTrib . ' )' . " \n " ;
$this -> info -> societe .= $this -> normaliseVoie ( $this -> info -> adresse );
2011-08-22 12:25:12 +00:00
}
protected function setMontant ()
{
// Piece jointe et montant
if ( $this -> info -> enveloppe ) {
$this -> info -> montant = 'Ci-joint une enveloppe timbrée ainsi qu\'un ' .
'chèque d\'un montant de ' . $this -> info -> prix .
' euros en règlement de cette commande.' ;
} else {
$this -> info -> montant = 'Ci-joint un chèque d\'un montant de ' . $this -> info -> prix .
' euros en règlement de cette commande.' ;
}
}
public function computeOdt ()
{
2011-08-22 13:30:32 +00:00
$config = array (
'ZIP_PROXY' => 'PhpZipProxy' ,
);
require_once 'Vendors/odtphp/library/odf.php' ;
$odf = new odf ( realpath ( dirname ( __FILE__ ) . '/modeleLettreGreffe.odt' ), $config );
2011-08-22 12:25:12 +00:00
$this -> setInfosCommande ();
$this -> setInfosIdentite ();
$this -> setInfosTribunal ();
$this -> setTarifs ();
$this -> setDestinataire ();
$this -> setSujet ();
$this -> setSociete ();
$this -> setMontant ();
$file = $this -> info -> siren . '-' . $this -> info -> ref . '.odt' ;
$odf -> setVars ( 'destinataire' , $this -> info -> destinataire , true , 'UTF-8' );
$odf -> setVars ( 'date' , date ( 'd/m/Y' ), true , 'UTF-8' );
$odf -> setVars ( 'ref' , $this -> info -> ref , true , 'UTF-8' );
$odf -> setVars ( 'sujet' , $this -> info -> sujet , true , 'UTF-8' );
$odf -> setVars ( 'societe' , $this -> info -> societe , true , 'UTF-8' );
$odf -> setVars ( 'montant' , $this -> info -> montant , true , 'UTF-8' );
$odf -> saveToDisk ( $this -> path . $file );
if ( file_exists ( $this -> path . $file ) == true ) {
header ( 'Content-Transfer-Encoding: none' );
header ( 'Content-type: application/vnd.oasis.opendocument.text' );
header ( 'Content-Length: ' . filesize ( $this -> path . $file ));
header ( 'Content-MD5: ' . base64_encode ( md5_file ( $this -> path . $file )));
header ( 'Content-Disposition: attachment, filename="' . $file . '"' );
header ( 'Cache-Control: private, max-age=0, must-revalidate' );
header ( 'Pragma: public' );
ini_set ( 'zlib.output_compression' , '0' );
echo file_get_contents ( $this -> path . $file );
}
}
public function computePdf ()
{
$this -> setInfosCommande ();
$this -> setInfosIdentite ();
$this -> setInfosTribunal ();
$this -> setTarifs ();
$this -> setDestinataire ();
$this -> setSujet ();
$this -> setSociete ();
$this -> setMontant ();
// initiate PDF
require_once realpath ( dirname ( __FILE__ )) . '/PDF.php' ;
$pdf = new PDF ();
/*
* Définition des marges
* Left , Top et Right
* Dimension du logo d ' entete :
**/
$pdf -> SetMargins ( 25 , 50 , 25 );
$border = 0 ;
// add a page
$pdf -> AddPage ();
$pdf -> SetFont ( " times " , " " , 10 );
//Position de départ
$pdf -> SetY ( 50 );
//Bloc Addresse destinataire
$largeur = 80 ;
$positionX = 105 ;
$pdf -> MultiCell ( $largeur , 5 , $this -> info -> destinataire , $border , 'L' , 0 , 1 , $positionX );
//Bloc Lieu, date
$date = date ( 'd/m/Y' );
$txt = " Rambouillet, le $date " ;
$positionY = $pdf -> GetY () + 8 ;
$pdf -> MultiCell ( $largeur , 5 , $txt , $border , 'L' , 0 , 1 , $positionX , $positionY );
//Bloc objet
$positionY = $pdf -> GetY () + 5 ;
$pdf -> MultiCell ( 20 , 5 , " Objet: " , $border , 'L' , 0 , 0 , '' , $positionY , true );
$pdf -> MultiCell ( 0 , 5 , " Commande de document " , $border , 'L' , 0 , 1 , '' , '' , true );
//Bloc ref
$pdf -> MultiCell ( 20 , 5 , " Réf. " , $border , 'L' , 0 , 0 , '' , '' , true );
$pdf -> MultiCell ( 0 , 5 , $this -> info -> ref , $border , 'L' , 0 , 1 , '' , '' , true );;
//Bloc titre
$positionY = $pdf -> GetY () + 5 ;
$pdf -> MultiCell ( 0 , 5 , " Madame, Monsieur, " , $border , 'L' , 0 , 1 , '' , $positionY , true );
//Type de document demandé (actes ou bilans pour l'instant)
//[un Kbis / l'état d'endettement / la copie de jugement de XXX en date du XXX ]
$positionY = $pdf -> GetY () + 2 ;
$pdf -> MultiCell ( 0 , 5 , " Je vous prie de nous faire parvenir $this->info ->sujet concernant la société: " , $border , 'L' , 0 , 1 , '' , $positionY , true );
//Bloc société
$positionY = $pdf -> GetY () + 2 ;
$pdf -> MultiCell ( 0 , 5 , $this -> info -> societe , $border , 'L' , 0 , 1 , '' , $positionY , true );
//Bloc pièce jointe
$positionY = $pdf -> GetY () + 5 ;
$pdf -> MultiCell ( 0 , 5 , $this -> info -> montant , $border , 'L' , 0 , 1 , '' , $positionY , true );
//Bloc intitulé adresse reception
$positionY = $pdf -> GetY () + 2 ;
$pdf -> MultiCell ( 0 , 5 ,
" Veuillez nous renvoyer le(s) document(s) par retour à l'adresse suivante: " ,
$border , 'L' , 0 , 1 , '' , $positionY , true );
//Bloc adresse s&d
$positionY = '' ;
$pdf -> MultiCell ( 0 , 5 ,
" SCORES ET DECISIONS " . " \n " .
" 19 rue Clairefontaine " . " \n " .
" 78120 RAMBOUILLET " . " \n "
, $border , 'L' , 0 , 1 , '' , $positionY , true );
//Bloc formule politesse
$positionY = $pdf -> GetY () + 2 ;
$pdf -> MultiCell ( 0 , 5 , " Dans l'attente de notre prochain échange, je vous prie de recevoir, Madame, Monsieur, l'expression de nos plus sincères salutations. " , $border , 'L' , 0 , 1 , '' , $positionY , true );
$file = $this -> info -> siren . '-' . $this -> info -> ref . '.pdf' ;
$pdf -> Output ( $this -> path . $file , 'F' );
if ( file_exists ( $path . $file ))
{
$content_type = 'application/pdf' ;
header ( 'Content-Transfer-Encoding: none' );
header ( 'Content-type: ' . $content_type . '' );
header ( 'Content-Length: ' . filesize ( $this -> path . $file ));
header ( 'Content-MD5: ' . base64_encode ( md5_file ( $this -> path . $file )));
header ( 'Content-Disposition: attachment, filename="' . $file . '"' );
header ( 'Cache-Control: private, max-age=0, must-revalidate' );
header ( 'Pragma: public' );
ini_set ( 'zlib.output_compression' , '0' );
echo file_get_contents ( $this -> path . $file );
}
}
protected function normaliseVoie ( $txt )
{
$replace_pairs = array (
'BD ' => 'BOULEVARD ' ,
'BVD ' => 'BOULEVARD ' ,
'AV ' => 'AVENUE ' ,
'AVE ' => 'AVENUE ' ,
'PL ' => 'PLACE ' ,
'PLA ' => 'PLACE ' ,
'PLAC ' => 'PLACE ' ,
'ESP ' => 'ESP ' ,
'RTE ' => 'ROUTE ' ,
'ST ' => 'SAINT ' ,
'STE ' => 'SAINTE ' ,
'QU ' => 'QUAI '
);
return strtr ( $txt , $replace_pairs );
}
}