233 lines
12 KiB
PHP
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;
|
|
}
|
|
|
|
?>
|