batch/1.1/old/facturation.php
2012-10-16 07:44:31 +00:00

233 lines
12 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
error_reporting(E_ALL ^ E_NOTICE);
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Déclanche la facturation Scores et Décisions pour le mois précédent.
";
define(REP_FACTURE, '/var/www/html/factures/');
$moisCourant=date('Y-m', mktime(0,0,0, date('m'), date('d'), date('Y')));
$moisPrecedent=date('Y-m', mktime(0,0,0, date('m')-1, date('d'), date('Y')));
//$moisPrecedent='2008-12';
$dateDeb=$moisPrecedent.'-01';
$dateFin=$moisPrecedent.'-31';
$tplt['dateFacture']=date('d/m/Y');
echo date('Y/m/d - H:i:s') ." - DEBUT du programme de facturation pour la période $dateDeb à $dateFin...".EOL;
$iDb=new WDB('sdv1');
$tabTmp=$iDb->select('clients', 'id, nom, actif, test, racineLogin, siren, nic, tva, editerFacture, fact_detail, fac_dest, fac_adr1, fac_adr2, fac_adr3, fac_email, fac_tel, fact_rib, liv_dest, liv_adr1, liv_adr2, liv_adr3, liv_email, liv_tel, droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces, accesPieces, accesKbis, accesInvestigations, miseSousSurveillance, forfaitExtranetPeriode, forfaitExtranetMontant, reconductionAuto, remarque, forfaitPiecesNb, forfaitPiecesMt, forfaitPiecesDep, forfaitInvestigNb, forfaitInvestigMt, forfaitInvestigDep, tarifIndiscore', '1', false, MYSQL_ASSOC);
$tabCli=array();
foreach ($tabTmp as $tabTmp2) {
$tabCli[$tabTmp2['id']]=$tabTmp2;
}
$nbCli=count($tabCli);
echo date('Y/m/d - H:i:s') ." - Nombre de clients : $nbCli".EOL;
$tabTmp=$iDb->select('utilisateurs', 'id, idClient, actif, deleted, LOWER(login) AS login, email, typeCompte, filtre_ip, civilite, nom, prenom, raisonSociale, tel, fax, mobile', '1', false, MYSQL_ASSOC);
$tabUti=array();
foreach ($tabTmp as $tabTmp2) {
$tabUti[$tabTmp2['login']]=$tabTmp2;
}
$nbUti=count($tabUti);
echo date('Y/m/d - H:i:s') ." - Nombre d'utilisateurs : $nbUti".EOL;
/*$nbActes=$iDb->select('logs', 'LOWER(login) AS login, page, siren, nic, params, dateHeure', "
(page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page='indiscore') AND (params<>'' OR page='indiscore') AND (params NOT LIKE '%erreur%' OR PARAMS LIKE '%erreur 17%') AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' GROUP BY login, siren, date(dateHeure), params ORDER BY login asc, dateHeure ASC", false, MYSQL_ASSOC, true);*/
$nbActes=$iDb->select('logs', 'LOWER(login) AS login, page, siren, nic, params, dateHeure', "
(page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page='indiscore') AND (params<>'' OR page='indiscore' AND tarifIndiscore<>0) AND (params NOT LIKE '%erreur%' OR PARAMS LIKE '%erreur 17%') AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' GROUP BY login, siren, date(dateHeure), params ORDER BY login asc, dateHeure ASC", false, MYSQL_ASSOC, true);
echo date('Y/m/d - H:i:s') ." - Nombre d'actes à facturer : $nbActes".EOL;
$loginPre=false;
$tabFacturation=$tabFacturationDet1=$tabFacturationDet2=array();
while ($tab=$iDb->fetch(MYSQL_ASSOC)) {
/** Nombre total d'actes commandés par Client et par type d'acte
**/
@$tabFacturation[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['page']]++;
/** Nombre total d'actes commandés par Client, utilisateurs et par type d'acte
**/
@$tabFacturationDet1[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['login']][$tab['page']]++;
/** Facturation détaillée des actes
**/
if ($tabCli[$tabUti[$tab['login']]['idClient']]['fact_detail']=='Oui')
@$tabFacturationDet2[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['login']][$tab['page']][]=
array( 'siren'=>$tab['siren'],
'params'=>$tab['params'],
'dateHeure'=>$tab['dateHeure']);
// @$tabFacturation2[$tab['login']][$tab['page']]++;
//echo $siren.' '.trim($tab['DIR_IDEN'])."\t:\t$civ Nom='$nom', Prenom='$prenom', Usage='$naissNom' né le $naissDate à $naissLieu\t";
//$loginPre=$tab['login'];
}
/*
echo "tabFacturation :\n";
print_r($tabFacturation);
echo "tabFacturationDet1 :\n";
print_r($tabFacturationDet1);
echo "$tabFacturationDet2 :\n";
print_r($tabFacturationDet2);
echo "tabCli :\n";
print_r($tabCli);
echo "tabUti :\n";
print_r($tabUti);
*/
$iFacture=0;
foreach ($tabFacturation as $idClient => $tabFacture) {
$iFacture++;
$numFacture=WDate::dateT('d/m/Y', 'Ym', $tplt['dateFacture']).sprintf("%04s", $iFacture);
$numClient = $tabCli[$idClient]['siren']."-$idClient";
$tplt['numFacture'] = $numFacture;
$tplt['numClient'] = $numClient;
$tplt['siren'] = $tabCli[$idClient]['siren'];
$tplt['nic'] = $tabCli[$idClient]['nic'];
$tplt['raisonSociale'] = $tabCli[$idClient]['nom'];
$tplt['numtva'] = $tabCli[$idClient]['tva'];
// echo 'Facturation détaillée : '.$tabCli[$idClient]['fact_detail']."\n";
// Destinataire Facturation / Signataire
$tplt['adresseFact1'] = $tabCli[$idClient]['fac_adr1'];
$tplt['adresseFact2'] = $tabCli[$idClient]['fac_adr2'];
$tplt['adresseFact3'] = $tabCli[$idClient]['fac_adr3'];
$tplt['signataireNom'] = $tabCli[$idClient]['fac_dest'];
$tplt['signataireMail'] = $tabCli[$idClient]['fac_email'];
$tplt['signataireTel'] = $tabCli[$idClient]['fac_tel'];
// Livraison / Correspondant
$tplt['adresseLiv1'] = $tabCli[$idClient]['liv_adr1'];
$tplt['adresseLiv2'] = $tabCli[$idClient]['liv_adr2'];
$tplt['adresseLiv3'] = $tabCli[$idClient]['liv_adr3'];
$tplt['correspNom'] = $tabCli[$idClient]['liv_dest'];
$tplt['correspMail'] = $tabCli[$idClient]['liv_email'];
$tplt['correspTel'] = $tabCli[$idClient]['liv_tel'];
// Non affiché
$fact_detail = $tabCli[$idClient]['fact_detail']; // Facturation détaillée
$fact_rib = $tabCli[$idClient]['fact_rib']; // RIB S&D à fournir au client
// droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces,
$accesPieces = $tabCli[$idClient]['accesPieces'];
$accesKbis = $tabCli[$idClient]['accesKbis'];
$accesInvestigations = $tabCli[$idClient]['accesInvestigations'];
$ligne=$tplt['totalht']=$tplt['remise']=$tplt['tva']=$tplt['totalttc']=0;
$tplt['ligne']=array();
/* for($i=0; $i<=10; $i++) {
$tplt['ligne'][$i]['intitule']=';
$tplt['ligne'][$ligne]['quantite']=1;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitExtranetMontant'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']
*/
if ($tabCli[$idClient]['forfaitExtranetPeriode']=='Mensuel') {
$tplt['ligne'][$ligne]['intitule']='Accès mensuel extranet '.WDate::dateT('d/m/Y', 'M Y', $tplt['dateFacture']);
$tplt['ligne'][$ligne]['quantite']=1;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitExtranetMontant'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
if ($tabCli[$idClient]['forfaitPiecesNb']>0) {
$tplt['ligne'][$ligne]['intitule']='Forfait '.$tabCli[$idClient]['forfaitPiecesNb'].' pièces officielles '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent);
$tplt['ligne'][$ligne]['quantite']=1;//;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitPiecesMt'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
if ($tabCli[$idClient]['forfaitPiecesDep']>0) {
$nbPiecesCommandees=@$tabFacture['greffe_actes'] + @$tabFacture['greffe_bilans']+
@$tabFacture['inpi_rcs'] + @$tabFacture['kbis'];
$tplt['ligne'][$ligne]['intitule']='Pièces officielles hors forfait '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent);
$tplt['ligne'][$ligne]['quantite']=$nbPiecesCommandees-$tabCli[$idClient]['forfaitPiecesNb'];
if ($tplt['ligne'][$ligne]['quantite']<0) $tplt['ligne'][$ligne]['quantite']=0;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitPiecesDep'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
if ($tabCli[$idClient]['tarifIndiscore']>0) {
//$nbPiecesCommandees=@$tabFacture['greffe_actes'] + @$tabFacture['greffe_bilans']+
// @$tabFacture['inpi_rcs'] + @$tabFacture['kbis'];
$tplt['ligne'][$ligne]['intitule']='IndiScore '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent);
$tplt['ligne'][$ligne]['quantite']=@$tabFacture['indiscore'];
if ($tplt['ligne'][$ligne]['quantite']<=0) $tplt['ligne'][$ligne]['quantite']=0;
$tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['tarifIndiscore'];
$tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht'];
$tplt['ligne'][$ligne]['remise']=0;
$tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196;
$tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva'];
$tplt['totalht']+=$tplt['ligne'][$ligne]['totalht'];
$tplt['remise']+=$tplt['ligne'][$ligne]['remise'];
$tplt['tva']+=$tplt['ligne'][$ligne]['tva'];
$tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc'];
$ligne++;
}
/*
$forfaitInvestigNb = $tabCli[$idClient]['forfaitInvestigNb'];
$forfaitInvestigMt = $tabCli[$idClient]['forfaitInvestigMt'];
$forfaitInvestigDep = $tabCli[$idClient]['forfaitInvestigDep'];
*/
$tabGlobal[$idClient]['totalht'] = $tplt['totalht'];
$tabGlobal[$idClient]['remise'] = $tplt['remise'];
$tabGlobal[$idClient]['tva'] = $tplt['tva'];
$tabGlobal[$idClient]['totalttc'] = $tplt['totalttc'];
// print_r($tabFacture);
if ($tplt['totalht']>0 && $tabCli[$idClient]['editerFacture']=='Oui') {
@mkdir(REP_FACTURE.$moisCourant);
$fp=fopen(REP_FACTURE.$moisCourant.'/'.$numFacture.'.html', 'w');
fwrite($fp, get_include_contents('/var/www/batch/factures/facture.php', $tplt));
fclose($fp);
$iFactureAff=$iFacture;
} else {
// On n'édite pas de facture à 0
$iFactureAff='-';
$iFacture--;
}
echo "Facture n°$iFactureAff - ".$tabCli[$idClient]['nom']." ($numClient) : ".$tplt['totalht']."€HT\n";
}
echo date('Y/m/d - H:i:s') ." - FIN du programme de facturation pour la période $dateDeb à $dateFin...".EOL;
die();
function get_include_contents($filename, $tplt) {
if (is_file($filename)) {
ob_start();
include $filename;
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
return false;
}
?>