2002-04-30 12:44:42 +02:00
< ? PHP
/* Copyright ( C ) 2001 - 2002 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2002-05-09 16:57:48 +02:00
*
2002-04-30 12:44:42 +02:00
* $Id $
* $Source $
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*
*/
require ( " ./pre.inc.php3 " );
2002-05-03 15:15:39 +02:00
2002-04-30 12:44:42 +02:00
function get_ca_propal ( $db , $year , $socidp ) {
2002-05-09 16:57:48 +02:00
$sql = " SELECT sum(f.price - f.remise) as sum FROM llx_propal as f WHERE fk_statut in (1,2) AND date_format(f.datep, '%Y') = $year " ;
2002-04-30 12:44:42 +02:00
if ( $socidp ) {
$sql .= " AND f.fk_soc = $socidp " ;
}
$result = $db -> query ( $sql );
if ( $result ) {
return $db -> result ( 0 , 0 );
} else {
return 0 ;
}
}
function get_ca ( $db , $year , $socidp ) {
2002-05-03 15:15:39 +02:00
$sql = " SELECT sum(f.amount) as sum FROM llx_facture as f WHERE f.paye = 1 AND date_format(f.datef , '%Y') = $year " ;
2002-04-30 12:44:42 +02:00
if ( $socidp ) {
$sql .= " AND f.fk_soc = $socidp " ;
}
$result = $db -> query ( $sql );
if ( $result ) {
return $db -> result ( 0 , 0 );
} else {
return 0 ;
}
}
function propals ( $db , $year , $month ) {
global $bc ;
2002-05-09 16:57:48 +02:00
$sql = " SELECT s.nom, s.idp, p.rowid as propalid, p.price - p.remise as price, p.ref, " . $db -> pdate ( " p.datep " ) . " as dp, c.label as statut, c.id as statutid " ;
2002-04-30 12:44:42 +02:00
$sql .= " FROM societe as s, llx_propal as p, c_propalst as c WHERE p.fk_soc = s.idp AND p.fk_statut = c.id " ;
$sql .= " AND c.id in (1,2) " ;
2002-05-03 15:15:39 +02:00
$sql .= " AND date_format(p.datep, '%Y') = $year " ;
$sql .= " AND round(date_format(p.datep, '%m')) = $month " ;
2002-04-30 12:44:42 +02:00
$sql .= " ORDER BY p.fk_statut " ;
$result = $db -> query ( $sql );
$num = $db -> num_rows ();
$i = 0 ;
print " <p><TABLE border= \" 0 \" width= \" 100% \" cellspacing= \" 0 \" cellpadding= \" 4 \" > " ;
print " <TR bgcolor= \" #e0e0e0 \" ><td colspan= \" 3 \" ><b>Propal</b></td></tr> " ;
$oldstatut = - 1 ;
$subtotal = 0 ;
while ( $i < $num ) {
$objp = $db -> fetch_object ( $i );
2002-05-09 16:57:48 +02:00
if ( $objp -> statut <> $oldstatut ) {
$oldstatut = $objp -> statut ;
if ( $i > 0 ) {
print " <tr><td align= \" right \" colspan= \" 4 \" >Total : <b> " . price ( $subtotal ) . " </b></td> \n " ;
print " <td align= \" left \" >Euros HT</td></tr> \n " ;
}
$subtotal = 0 ;
2002-04-30 12:44:42 +02:00
2002-05-09 16:57:48 +02:00
print " <TR bgcolor= \" #e0e0e0 \" > " ;
print " <TD>Societe</td> " ;
print " <TD>R<> f</TD> " ;
print " <TD align= \" right \" >Date</TD> " ;
print " <TD align= \" right \" >Prix</TD> " ;
print " <TD align= \" center \" >Statut</TD> " ;
print " </TR> \n " ;
$var = True ;
2002-04-30 12:44:42 +02:00
}
2002-05-09 16:57:48 +02:00
$var =! $var ;
print " <TR $bc[$var] > " ;
print " <TD><a href= \" comp.php3?socidp= $objp->idp\ " > $objp -> nom </ a ></ TD > \n " ;
print " <TD><a href= \" ../comm/propal.php3?propalid= $objp->propalid\ " > $objp -> ref </ a ></ TD > \n " ;
print " <TD align= \" right \" > " . strftime ( " %d %B %Y " , $objp -> dp ) . " </TD> \n " ;
print " <TD align= \" right \" > " . price ( $objp -> price ) . " </TD> \n " ;
print " <TD align= \" center \" > $objp->statut </TD> \n " ;
print " </TR> \n " ;
$total = $total + $objp -> price ;
$subtotal = $subtotal + $objp -> price ;
$i ++ ;
2002-04-30 12:44:42 +02:00
}
2002-05-03 15:15:39 +02:00
print " <tr><td align= \" right \" colspan= \" 4 \" >Total : <b> " . price ( $subtotal ) . " </b></td> \n " ;
2002-04-30 12:44:42 +02:00
print " <td align= \" left \" >Euros HT</td></tr> \n " ;
2002-05-03 15:15:39 +02:00
print " <tr><td colspan= \" 2 \" align= \" right \" ><b>Total ~ " . francs ( $total ) . " FF HT</b></td> " ;
print " <td colspan= \" 2 \" align= \" right \" ><b>Total : " . price ( $total ) . " </b></td> " ;
2002-04-30 12:44:42 +02:00
print " <td align= \" left \" ><b>Euros HT</b></td></tr> " ;
print " </TABLE> " ;
$db -> free ();
}
function factures ( $db , $year , $month , $paye ) {
2002-05-09 16:57:48 +02:00
global $bc ;
2002-04-30 12:44:42 +02:00
2002-05-03 15:15:39 +02:00
$sql = " SELECT s.nom, s.idp, f.facnumber, f.amount, " . $db -> pdate ( " f.datef " ) . " as df, f.paye, f.rowid as facid " ;
2002-04-30 12:44:42 +02:00
$sql .= " FROM societe as s,llx_facture as f WHERE f.fk_soc = s.idp AND f.paye = $paye " ;
2002-05-03 15:15:39 +02:00
$sql .= " AND date_format(f.datef, '%Y') = $year " ;
$sql .= " AND round(date_format(f.datef, '%m')) = $month " ;
2002-04-30 12:44:42 +02:00
$sql .= " ORDER BY f.datef DESC " ;
$result = $db -> query ( $sql );
if ( $result ) {
$num = $db -> num_rows ();
if ( $num > 0 ) {
$i = 0 ;
print " <p><TABLE border= \" 0 \" width= \" 100% \" cellspacing= \" 0 \" cellpadding= \" 3 \" > " ;
print " <TR bgcolor= \" orange \" ><td colspan= \" 3 \" ><b>Factures</b></td></tr> " ;
print " <TR bgcolor= \" orange \" > " ;
print " <TD>Societe</td> " ;
print " <TD>Num</TD> " ;
print " <TD align= \" right \" >Date</TD> " ;
print " <TD align= \" right \" >Montant</TD> " ;
print " <TD align= \" right \" >Pay<61> </TD> " ;
print " </TR> \n " ;
$var = True ;
while ( $i < $num ) {
$objp = $db -> fetch_object ( $i );
$var =! $var ;
print " <TR $bc[$var] > " ;
print " <TD><a href= \" comp.php3?socidp= $objp->idp\ " > $objp -> nom </ a ></ TD > \n " ;
print " <TD><a href= \" facture.php3?facid= $objp->facid\ " > $objp -> facnumber </ a ></ TD > \n " ;
if ( $objp -> df > 0 ) {
print " <TD align= \" right \" > " . strftime ( " %d %B %Y " , $objp -> df ) . " </TD> \n " ;
} else {
print " <TD align= \" right \" ><b>!!!</b></TD> \n " ;
}
2002-05-03 15:15:39 +02:00
print " <TD align= \" right \" > " . price ( $objp -> amount ) . " </TD> \n " ;
2002-04-30 12:44:42 +02:00
$payes [ 1 ] = " oui " ;
$payes [ 0 ] = " <b>non</b> " ;
print " <TD align= \" right \" > " . $payes [ $objp -> paye ] . " </TD> \n " ;
print " </TR> \n " ;
$total = $total + $objp -> amount ;
$i ++ ;
}
2002-05-03 15:15:39 +02:00
print " <tr><td colspan= \" 3 \" align= \" right \" ><b>Total ~ " . francs ( $total ) . " FF HT</b></td> " ;
print " <td align= \" right \" ><b>Total : " . price ( $total ) . " </b></td><td></td></tr> " ;
2002-04-30 12:44:42 +02:00
print " </TABLE> " ;
$db -> free ();
}
}
}
function pt ( $db , $sql , $year ) {
2002-05-09 16:57:48 +02:00
global $bc ;
2002-04-30 12:44:42 +02:00
$result = $db -> query ( $sql );
if ( $result ) {
$num = $db -> num_rows ();
$i = 0 ; $total = 0 ;
print " <p><TABLE border= \" 1 \" width= \" 100% \" cellspacing= \" 0 \" cellpadding= \" 3 \" > " ;
2002-05-09 16:57:48 +02:00
print " <TR class= \" liste_titre \" > " ;
2002-04-30 12:44:42 +02:00
print " <TD>Mois</TD> " ;
print " <td align= \" right \" >Montant</td></tr> \n " ;
$var = True ;
$month = 1 ;
while ( $i < $num ) {
$obj = $db -> fetch_object ( $i );
$var =! $var ;
if ( $obj -> dm > $month ) {
for ( $b = $month ; $b < $obj -> dm ; $b ++ ) {
print " <TR $bc[$var] > " ;
print " <TD> " . strftime ( " %B " , mktime ( 12 , 0 , 0 , $b , 1 , $year )) . " </TD> \n " ;
print " <TD align= \" right \" >0</TD> \n " ;
print " </TR> \n " ;
$var =! $var ;
$ca [ $b ] = 0 ;
}
}
2002-05-03 15:15:39 +02:00
2002-04-30 12:44:42 +02:00
if ( $obj -> sum > 0 ) {
print " <TR $bc[$var] > " ;
print " <td><a href= \" comp.php3?details=1&year= $year &month= $obj->dm\ " > " ;
print strftime ( " %B " , mktime ( 12 , 0 , 0 , $obj -> dm , 1 , $year )) . " </TD> \n " ;
2002-05-03 15:15:48 +02:00
print " <TD align= \" right \" > " . price ( $obj -> sum ) . " </TD> \n " ;
2002-04-30 12:44:42 +02:00
print " </TR> \n " ;
$month = $obj -> dm + 1 ;
$ca [ $obj -> dm ] = $obj -> sum ;
$total = $total + $obj -> sum ;
}
$i ++ ;
}
if ( $num ) {
$beg = $obj -> dm ;
} else {
$beg = 1 ;
}
if ( $beg <= 12 ) {
for ( $b = $beg + 1 ; $b < 13 ; $b ++ ) {
$var =! $var ;
print " <TR $bc[$var] > " ;
print " <TD> " . strftime ( " %B " , mktime ( 12 , 0 , 0 , $b , 1 , $year )) . " </TD> \n " ;
print " <TD align= \" right \" >0</TD> \n " ;
print " </TR> \n " ;
$ca [ $b ] = 0 ;
}
}
2002-05-03 15:15:48 +02:00
print " <tr><td align= \" right \" >Total :</td><td align= \" right \" ><b> " . price ( $total ) . " </b></td></tr> " ;
2002-04-30 12:44:42 +02:00
print " </table> " ;
$db -> free ();
return $ca ;
2002-05-03 15:15:39 +02:00
} else {
print $db -> error ();
2002-04-30 12:44:42 +02:00
}
}
function ppt ( $db , $year , $socidp ) {
2002-05-09 16:57:48 +02:00
global $bc ;
2002-04-30 12:44:42 +02:00
print " <table width= \" 100% \" > " ;
print " <tr><td valign= \" top \" width= \" 30% \" > " ;
print " CA Pr<50> visionnel bas<61> sur les propal $year " ;
print " </td><td valign= \" top \" >CA R<> alis<69> $year </td> " ;
print " <td valign= \" top \" >Delta $year </td></tr> " ;
print " <tr><td valign= \" top \" width= \" 30% \" > " ;
2002-05-09 16:57:48 +02:00
$sql = " SELECT sum(f.price - f.remise) as sum, round(date_format(f.datep,'%m')) as dm " ;
2002-05-03 15:15:39 +02:00
$sql .= " FROM llx_propal as f WHERE fk_statut in (1,2) AND date_format(f.datep,'%Y') = $year " ;
2002-04-30 12:44:42 +02:00
if ( $socidp ) {
$sql .= " AND f.fk_soc = $socidp " ;
}
$sql .= " GROUP BY dm " ;
$prev = pt ( $db , $sql , $year );
print " </td><td valign= \" top \" width= \" 30% \" > " ;
2002-05-03 15:15:39 +02:00
$sql = " SELECT sum(f.amount) as sum, round(date_format(f.datef, '%m')) as dm " ;
$sql .= " FROM llx_facture as f WHERE f.paye = 1 AND date_format(f.datef,'%Y') = $year " ;
2002-04-30 12:44:42 +02:00
if ( $socidp ) {
$sql .= " AND f.fk_soc = $socidp " ;
}
$sql .= " GROUP BY dm " ;
$ca = pt ( $db , $sql , $year );
print " </td><td valign= \" top \" width= \" 30% \" > " ;
print " <p><TABLE border= \" 1 \" width= \" 100% \" cellspacing= \" 0 \" cellpadding= \" 3 \" > " ;
2002-05-09 16:57:48 +02:00
print " <TR class= \" liste_titre \" > " ;
2002-04-30 12:44:42 +02:00
print " <TD>Mois</TD> " ;
print " <TD align= \" right \" >Montant</TD> " ;
print " </TR> \n " ;
2002-05-09 16:57:48 +02:00
2002-04-30 12:44:42 +02:00
$var = 1 ;
for ( $b = 1 ; $b <= 12 ; $b ++ ) {
$var =! $var ;
2002-05-03 15:15:39 +02:00
2002-04-30 12:44:42 +02:00
$delta = $ca [ $b ] - $prev [ $b ];
$deltat = $deltat + $delta ;
print " <TR $bc[$var] > " ;
print " <TD> " . strftime ( " %B " , mktime ( 12 , 0 , 0 , $b , 1 , $year )) . " </TD> \n " ;
2002-05-03 15:15:48 +02:00
print " <TD align= \" right \" > " . price ( $delta ) . " </TD> \n " ;
2002-04-30 12:44:42 +02:00
print " </TR> \n " ;
}
$ayear = $year - 1 ;
$acat = get_ca ( $db , $ayear , $socidp ) - get_ca_propal ( $db , $ayear , $socidp );
2002-05-03 15:15:48 +02:00
print " <tr><td align= \" right \" >Total :</td><td align= \" right \" > " . price ( $deltat ) . " </td></tr> " ;
print " <tr><td align= \" right \" >Rappel $ayear :</td><td align= \" right \" > " . price ( $acat ) . " </td></tr> " ;
print " <tr><td align= \" right \" >Soit :</td><td align= \" right \" ><b> " . price ( $acat + $deltat ) . " </b></td></tr> " ;
2002-04-30 12:44:42 +02:00
print " </table> " ;
print " </td></tr></table> " ;
}
/*
*
*/
llxHeader ();
$db = new Db ();
2002-05-03 15:15:39 +02:00
ppt ( $db , 2002 , $socidp );
2002-04-30 12:44:42 +02:00
if ( $details == 1 ) {
print " <TABLE border= \" 0 \" width= \" 100% \" cellspacing= \" 0 \" cellpadding= \" 4 \" ><tr><td valign= \" top \" width= \" 50% \" > " ;
factures ( $db , $year , $month , 1 );
print " </td><td valign= \" top \" width= \" 50% \" > " ;
propals ( $db , $year , $month );
print " </td></tr></table> " ;
}
$db -> close ();
llxFooter ( " <em>Dernière modification $Date $ révision $Revision $ </em> " );
?>