Intégration de la remise client et des prestations annexes

This commit is contained in:
Rodolphe Quiedeville 2006-01-10 15:58:14 +00:00
parent 6eedf89132
commit 71d171a1c2

View File

@ -302,7 +302,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
$fac = new Facture($db, $soc->id); $fac = new Facture($db, $soc->id);
$cancel_facture = 1; $cancel_facture = 1;
$fac->date = $datetime; $fac->date = $datetime;
$fac->cond_reglement = 1; $fac->cond_reglement_id = 1;
$fac->remise_percent = 0; $fac->remise_percent = 0;
$facid = $fac->create($user); $facid = $fac->create($user);
@ -313,8 +313,8 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
} }
else else
{ {
dolibarr_syslog("Erreur création objet facture"); dolibarr_syslog("Erreur création objet facture erreur : $facid");
$error = 4; $error = 16;
} }
} }
@ -336,7 +336,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
else else
{ {
dolibarr_syslog("ERREUR lecture facture téléphonique $factel_id"); dolibarr_syslog("ERREUR lecture facture téléphonique $factel_id");
$error++; $error = 17;
} }
/* Lecture de la ligne correspondante */ /* Lecture de la ligne correspondante */
@ -349,7 +349,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
else else
{ {
dolibarr_syslog("ERREUR lecture ligne $factel->ligne"); dolibarr_syslog("ERREUR lecture ligne $factel->ligne");
$error++; $error = 18;
} }
if (!$error && $ligne->facturable) /* Test si on doit facturer ou non la ligne */ if (!$error && $ligne->facturable) /* Test si on doit facturer ou non la ligne */
@ -364,7 +364,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
} }
else else
{ {
$error++; $error = 19;
} }
$soca = new Societe($db); $soca = new Societe($db);
@ -392,7 +392,6 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
$ventil = 0 ; $ventil = 0 ;
if (defined("TELEPHONIE_COMPTE_VENTILATION")) if (defined("TELEPHONIE_COMPTE_VENTILATION"))
{ {
if (is_numeric(TELEPHONIE_COMPTE_VENTILATION)) if (is_numeric(TELEPHONIE_COMPTE_VENTILATION))
{ {
$ventil = TELEPHONIE_COMPTE_VENTILATION; $ventil = TELEPHONIE_COMPTE_VENTILATION;
@ -454,7 +453,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
} }
else else
{ {
$error = 2; $error = 20;
dolibarr_syslog("Erreur $error"); dolibarr_syslog("Erreur $error");
} }
} }
@ -503,6 +502,150 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
} }
} }
/*********************************/
/* */
/* Remise exceptionnelle */
/* */
/*********************************/
if (!$error)
{
$remise_exceptionnelle = 0;
//$fac = new Facture($db, $soc->id);
$sql = "SELECT rowid,amount,fk_user";
$sql .= " FROM ".MAIN_DB_PREFIX."telephonie_client_remise";
$sql .= " WHERE fk_client = ".$soc->id;
$sql .= " AND fk_facture = 0";
$resql = $db->query($sql) ;
if ( $resql )
{
while ($row = $db->fetch_row($resql))
{
$remise_id = $row[0];
$remise_exceptionnelle = $row[1];
$remise_user = $row[2];
}
}
else
{
$error = 32;
dolibarr_syslog("Erreur remise exceptionnelle");
dolibarr_syslog($sql);
}
if ($remise_exceptionnelle > 0)
{
// Calcul valeur de remise a appliquer (remise) et reliquat
if ($remise_exceptionnelle > ($fac->total_ht * 0.9))
{
$remise = floor($this->total_ht * 0.9);
$reliquat = $remise_exceptionnelle - $remise;
}
else
{
$remise = $remise_exceptionnelle;
$reliquat=0;
}
$result_insert = $fac->addline($fac->id,
addslashes('Remise exceptionnelle'),
(0 - $remise),
1,
'19.6');
if ($result_insert < 0)
{
$error = 33;
}
$sql = 'UPDATE '.MAIN_DB_PREFIX.'telephonie_client_remise';
$sql .= ' SET fk_facture = '.$fac->id;
$sql .= " ,amount = '".ereg_replace(',','.',$remise)."'";
$sql .= ' WHERE rowid ='.$remise_id;
$sql .= ' AND fk_client ='. $soc->id;
if (! $db->query( $sql))
{
$error = 34;
}
if ($reliquat > 0 && $error == 0)
{
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'telephonie_client_remise';
$sql .= ' (fk_client, datec, amount, fk_user) ';
$sql .= ' VALUES ';
$sql .= ' ('.$soc->id;
$sql .= ' ,now()';
$sql .= " ,'".ereg_replace(',','.',$reliquat)."'";
$sql .= ' ,'.$remise_user;
$sql .= ')';
if (! $db->query( $sql) )
{
$error = 35;
}
}
}
}
/*********************************/
/* */
/* Prestas annexes */
/* */
/*********************************/
if (!$error)
{
$prestas = 0;
$sql = "SELECT rowid,amount,libelle";
$sql .= " FROM ".MAIN_DB_PREFIX."telephonie_client_presta";
$sql .= " WHERE fk_client = ".$soc->id;
$sql .= " AND fk_facture = 0";
$resql = $db->query($sql) ;
if ( $resql )
{
while ($row = $db->fetch_row($resql))
{
$presta_id[$prestas] = $row[0];
$presta_amount[$prestas] = $row[1];
$presta_libelle[$prestas] = $row[2];
$prestas++;
}
}
else
{
$error = 36;
}
if ($prestas > 0)
{
$i = 0;
while ($i < $prestas)
{
$result_insert = $fac->addline($fac->id,
addslashes($presta_libelle[$i]),
$presta_amount[$i],
1,
'19.6');
if ($result_insert < 0)
{
$error = 37;
}
$sql = 'UPDATE '.MAIN_DB_PREFIX.'telephonie_client_presta';
$sql .= ' SET fk_facture = '.$fac->id;
$sql .= ' WHERE rowid ='.$presta_id[$i];
$sql .= ' AND fk_client ='. $soc->id;
if (! $db->query( $sql))
{
$error = 38;
}
$i++;
}
}
}
/*********************************/ /*********************************/
/* */ /* */
@ -548,7 +691,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
else else
{ {
dolibarr_syslog("ERREUR lecture facture téléphonique $factel_id"); dolibarr_syslog("ERREUR lecture facture téléphonique $factel_id");
$error++; $error = 17;
} }
/* Lecture de la ligne correspondante */ /* Lecture de la ligne correspondante */
@ -561,7 +704,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
else else
{ {
dolibarr_syslog("ERREUR lecture ligne $factel->ligne"); dolibarr_syslog("ERREUR lecture ligne $factel->ligne");
$error++; $error = 18;
} }
/* Facture détaillée standard */ /* Facture détaillée standard */
@ -643,9 +786,12 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
if ($fac->client->bank_account->verif() && $ligne->mode_paiement == 'pre') if ($fac->client->bank_account->verif() && $ligne->mode_paiement == 'pre')
{ {
$message .= "Cette facture sera prélevée sur votre compte bancaire numéro : "; $message .= "Cette facture sera prélevée sur votre compte bancaire numéro : ";
$message .= $fac->client->bank_account->number; $message .= $fac->client->bank_account->number."\n";
} }
$message .= "Toute l'équipe ibreizh vous offre ses meilleurs voeux 2006\n";
$message .= "Dans le cadre de notre charte qualité nous prendrons contact avec vous au cours de ce mois à bientôt...";
if ($verbose) dolibarr_syslog("Création du pdf facture : $facid"); if ($verbose) dolibarr_syslog("Création du pdf facture : $facid");
if (! facture_pdf_create($db, $facid, $message)) if (! facture_pdf_create($db, $facid, $message))
@ -681,7 +827,7 @@ function facture_contrat($db, $user, $contrat_id, $factel_ids, $datetime, &$fact
else else
{ {
$db->query("ROLLBACK"); $db->query("ROLLBACK");
dolibarr_syslog("ROLLBACK de la transaction");; dolibarr_syslog("ROLLBACK de la transaction $error");
} }
} }