New: Ajout des triggers sur les paiements (PAYEMENT_CUSTOMER_CREATE et PAYMENT_SUPPLIER_CREATE) en prevision de la compta expert.

Qual: La facture fournisseur hérite de facture (factorisation de code)
This commit is contained in:
Laurent Destailleur 2006-04-08 12:52:30 +00:00
parent 234e7b227a
commit 1870434b2a
12 changed files with 151 additions and 219 deletions

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -119,7 +119,7 @@ if ($_POST['action'] == 'add_paiement')
if ($conf->banque->enabled) if ($conf->banque->enabled)
{ {
// Insertion dans llx_bank // Insertion dans llx_bank
$label = 'Règlement facture'; $label = "(CustomerInvoicePayment)";
$acc = new Account($db, $_POST['accountid']); $acc = new Account($db, $_POST['accountid']);
//paiementid contient "CHQ ou VIR par exemple" //paiementid contient "CHQ ou VIR par exemple"
$bank_line_id = $acc->addline($paiement->datepaye, $bank_line_id = $acc->addline($paiement->datepaye,
@ -171,6 +171,7 @@ if ($_POST['action'] == 'add_paiement')
$loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id; $loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id;
$db->commit(); $db->commit();
Header('Location: '.$loc); Header('Location: '.$loc);
exit;
} }
else else
{ {

View File

@ -24,7 +24,8 @@
/** /**
\file htdocs/compta/paiement/fiche.php \file htdocs/compta/paiement/fiche.php
\ingroup facture \ingroup facture
\brief Onglet paiement d'un paiement \brief Onglet paiement d'un paiement client
\remarks Fichier presque identique a fournisseur/paiement/fiche.php
\version $Revision$ \version $Revision$
*/ */
@ -183,14 +184,18 @@ if ($resql)
$total = 0; $total = 0;
print '<br><table class="noborder" width="100%">'; print '<br><table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans('Bill').'</td><td>'.$langs->trans('Company').'</td>'; print '<td>'.$langs->trans('Bill').'</td>';
print '<td align="right">'.$langs->trans('AmountTTC').'</td><td align="center">'.$langs->trans('Status').'</td>'; print '<td align="center">'.$langs->trans('Status').'</td>';
print '<td>'.$langs->trans('Company').'</td>';
print '<td align="right">'.$langs->trans('AmountTTC').'</td>';
print "</tr>\n"; print "</tr>\n";
if ($num > 0) if ($num > 0)
{ {
$var=True; $var=True;
$facturestatic=new Facture($db);
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
@ -199,10 +204,9 @@ if ($resql)
print '<td><a href="'.DOL_URL_ROOT.'/compta/facture.php?facid='.$objp->facid.'">'.img_object($langs->trans('ShowBill'),'bill').' '; print '<td><a href="'.DOL_URL_ROOT.'/compta/facture.php?facid='.$objp->facid.'">'.img_object($langs->trans('ShowBill'),'bill').' ';
print $objp->facnumber; print $objp->facnumber;
print "</a></td>\n"; print "</a></td>\n";
print '<td align="center">'.$facturestatic->LibStatut($objp->paye,$objp->fk_statut,2,1).'</td>';
print '<td><a href="'.DOL_URL_ROOT.'/compta/fiche.php?socid='.$objp->idp.'">'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.'</a></td>'; print '<td><a href="'.DOL_URL_ROOT.'/compta/fiche.php?socid='.$objp->idp.'">'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.'</a></td>';
print '<td align="right">'.price($objp->amount).'</td>'; print '<td align="right">'.price($objp->amount).'</td>';
$fac=new Facture($db);
print '<td align="center">'.$fac->LibStatut($objp->paye,$objp->fk_statut).'</td>';
print "</tr>\n"; print "</tr>\n";
if ($objp->paye == 1) if ($objp->paye == 1)
{ {

View File

@ -1326,6 +1326,7 @@ class Facture
* \param paye Etat paye * \param paye Etat paye
* \param statut Id statut * \param statut Id statut
* \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto
* \param alreadypayed Montant deja payé
* \return string Libellé du statut * \return string Libellé du statut
*/ */
function LibStatut($paye,$statut,$mode=0,$alreadypayed=-1) function LibStatut($paye,$statut,$mode=0,$alreadypayed=-1)

View File

@ -120,7 +120,7 @@ if ($action == 'add_paiement')
if ($conf->banque->enabled) if ($conf->banque->enabled)
{ {
// Insertion dans llx_bank // Insertion dans llx_bank
$label = 'Règlement fournisseur'; $label = "(SupplierInvoicePayment)";
$acc = new Account($db, $_POST['accountid']); $acc = new Account($db, $_POST['accountid']);
//paiementid contient "CHQ ou VIR par exemple" //paiementid contient "CHQ ou VIR par exemple"
$bank_line_id = $acc->addline($paiement->datepaye, $bank_line_id = $acc->addline($paiement->datepaye,

View File

@ -25,6 +25,7 @@
\file htdocs/fourn/facture/paiementfourn.class.php \file htdocs/fourn/facture/paiementfourn.class.php
\ingroup fournisseur, facture \ingroup fournisseur, facture
\brief Page de création de paiement factures fournisseurs \brief Page de création de paiement factures fournisseurs
\remarks Cette classe est presque identique à paiement.class.php
\version $Revision$ \version $Revision$
*/ */
@ -120,23 +121,23 @@ class PaiementFourn
*/ */
function create($user) function create($user)
{ {
$sql_err = 0; $error = 0;
// Nettoyage parametres
$value = price2num($value);
$this->total = 0;
foreach ($this->amounts as $key => $value)
{
$val = round($value, 2);
$this->amounts[$key] = $val;
$this->total += $val;
}
$this->total = price2num($this->total);
$this->db->begin(); $this->db->begin();
$this->total = 0.0; if ($this->total <> 0) // On accepte les montants négatifs
foreach ($this->amounts as $key => $value)
{
$val = price2num($value);
if (is_numeric($val))
{
$val = price2num(round($val, 2));
$this->total += $val;
}
$this->amounts[$key] = $val;
}
$this->total = price2num($this->total);
if ($this->total <> 0) /* On accepte les montants négatifs pour les avoirs ??? */
{ {
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiementfourn (datec, datep, amount, fk_paiement, num_paiement, note, fk_user_author)'; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiementfourn (datec, datep, amount, fk_paiement, num_paiement, note, fk_user_author)';
$sql .= ' VALUES (now(), '.$this->datepaye.', \''.$this->total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.$this->note.'\', '.$user->id.')'; $sql .= ' VALUES (now(), '.$this->datepaye.', \''.$this->total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.$this->note.'\', '.$user->id.')';
@ -144,6 +145,8 @@ class PaiementFourn
if ($resql) if ($resql)
{ {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiementfourn'); $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiementfourn');
// Insere tableau des montants / factures
foreach ($this->amounts as $key => $amount) foreach ($this->amounts as $key => $amount)
{ {
$facid = $key; $facid = $key;
@ -154,7 +157,7 @@ class PaiementFourn
if (! $this->db->query($sql) ) if (! $this->db->query($sql) )
{ {
dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid); dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid);
$sql_err++; $error++;
} }
} }
else else
@ -162,15 +165,25 @@ class PaiementFourn
dolibarr_syslog('PaiementFourn::Create Montant non numérique'); dolibarr_syslog('PaiementFourn::Create Montant non numérique');
} }
} }
if (! $error)
{
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php");
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('PAYMENT_SUPPLIER_CREATE',$this,$user,$lang,$conf);
if ($result < 0) $error++;
// Fin appel triggers
}
} }
else else
{ {
dolibarr_syslog('PaiementFourn::Create Erreur INSERT dans paiementfourn'); dolibarr_syslog('PaiementFourn::Create Erreur INSERT dans paiementfourn');
$sql_err++; $error++;
} }
} }
if ( $this->total <> 0 && $sql_err == 0 ) // On accepte les montants négatifs if ( $this->total <> 0 && $error == 0 ) // On accepte les montants négatifs
{ {
$this->db->commit(); $this->db->commit();
dolibarr_syslog('PaiementFourn::Create Ok Total = '.$this->total); dolibarr_syslog('PaiementFourn::Create Ok Total = '.$this->total);

View File

@ -29,13 +29,15 @@
\version $Revision$ \version $Revision$
*/ */
include_once(DOL_DOCUMENT_ROOT."/facture.class.php");
/** /**
\class FactureFournisseur \class FactureFournisseur
\brief Classe permettant la gestion des factures fournisseurs \brief Classe permettant la gestion des factures fournisseurs
*/ */
class FactureFournisseur class FactureFournisseur extends Facture
{ {
var $id; var $id;
var $db; var $db;
@ -505,144 +507,6 @@ class FactureFournisseur
} }
/**
* \brief Retourne le libellé du statut d'une facture (brouillon, validée, abandonnée, payée)
* \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long
* \return string Libelle
*/
function getLibStatut($mode=0)
{
return $this->LibStatut($this->paye,$this->statut,$mode);
}
/**
* \brief Renvoi le libellé d'un statut donné
* \param paye Etat paye
* \param statut Id statut
* \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto
* \return string Libellé du statut
*/
function LibStatut($paye,$statut,$mode=0)
{
global $langs;
$langs->load('bills');
if ($mode == 0)
{
$prefix='';
if (! $paye)
{
if ($statut == 0) return $langs->trans('Bill'.$prefix.'StatusDraft');
if ($statut == 3) return $langs->trans('Bill'.$prefix.'StatusCanceled');
if ($alreadypayed <= 0) return $langs->trans('Bill'.$prefix.'StatusNotPayed');
return $langs->trans('Bill'.$prefix.'StatusStarted');
}
else
{
return $langs->trans('Bill'.$prefix.'StatusPayed');
}
}
if ($mode == 1)
{
$prefix='Short';
if (! $paye)
{
if ($statut == 0) return $langs->trans('Bill'.$prefix.'StatusDraft');
if ($statut == 3) return $langs->trans('Bill'.$prefix.'StatusCanceled');
if ($alreadypayed <= 0) return $langs->trans('Bill'.$prefix.'StatusNotPayed');
return $langs->trans('Bill'.$prefix.'StatusStarted');
}
else
{
return $langs->trans('Bill'.$prefix.'StatusPayed');
}
}
if ($mode == 2)
{
$prefix='Short';
if (! $paye)
{
if ($statut == 0) return img_picto($langs->trans('Bill'.$prefix.'StatusDraft'),'statut0').' '.$langs->trans('Bill'.$prefix.'StatusDraft');
if ($statut == 3) return img_picto($langs->trans('Bill'.$prefix.'StatusCanceled'),'statut5').' '.$langs->trans('Bill'.$prefix.'StatusCanceled');
if ($alreadypayed <= 0) return img_picto($langs->trans('Bill'.$prefix.'StatusNotPayed'),'statut1').' '.$langs->trans('Bill'.$prefix.'StatusNotPayed');
return img_picto($langs->trans('Bill'.$prefix.'StatusStarted'),'statut3').' '.$langs->trans('Bill'.$prefix.'StatusStarted');
}
else
{
return img_picto($langs->trans('Bill'.$prefix.'StatusPayed'),'statut6').' '.$langs->trans('Bill'.$prefix.'StatusPayed');
}
}
if ($mode == 3)
{
$prefix='Short';
if (! $paye)
{
if ($statut == 0) return img_picto($langs->trans('Bill'.$prefix.'StatusDraft'),'statut0');
if ($statut == 3) return img_picto($langs->trans('Bill'.$prefix.'StatusCanceled'),'statut5');
if ($alreadypayed <= 0) return img_picto($langs->trans('Bill'.$prefix.'StatusNotPayed'),'statut1');
return img_picto($langs->trans('Bill'.$prefix.'StatusStarted'),'statut3');
}
else
{
return img_picto($langs->trans('Bill'.$prefix.'StatusPayed'),'statut6');
}
}
if ($mode == 4)
{
if (! $paye)
{
if ($statut == 0) return img_picto($langs->trans('BillStatusDraft'),'statut0').' '.$langs->trans('BillStatusDraft');
if ($statut == 3) return img_picto($langs->trans('BillStatusCanceled'),'statut5').' '.$langs->trans('BillStatusCanceled');
if ($alreadypayed <= 0) return img_picto($langs->trans('BillStatusNotPayed'),'statut1').' '.$langs->trans('BillStatusNotPayed');
return img_picto($langs->trans('BillStatusStarted'),'statut3').' '.$langs->trans('BillStatusStarted');
}
else
{
return img_picto($langs->trans('BillStatusPayed'),'statut6').' '.$langs->trans('BillStatusPayed');
}
}
if ($mode == 5)
{
$prefix='Short';
if (! $paye)
{
if ($statut == 0) return $langs->trans('Bill'.$prefix.'StatusDraft').' '.img_picto($langs->trans('Bill'.$prefix.'StatusDraft'),'statut0');
if ($statut == 3) return $langs->trans('Bill'.$prefix.'StatusCanceled').' '.img_picto($langs->trans('Bill'.$prefix.'StatusCanceled'),'statut5');
if ($alreadypayed <= 0) return $langs->trans('Bill'.$prefix.'StatusNotPayed').' '.img_picto($langs->trans('Bill'.$prefix.'StatusNotPayed'),'statut1');
return $langs->trans('Bill'.$prefix.'StatusStarted').' '.img_picto($langs->trans('Bill'.$prefix.'StatusStarted'),'statut3');
}
else
{
return $langs->trans('Bill'.$prefix.'StatusPayed').' '.img_picto($langs->trans('Bill'.$prefix.'StatusPayed'),'statut6');
}
}
}
/**
* \brief Renvoi le libellé court d'un statut donné
* \param paye etat paye
* \param statut id statut
* \param amount amount already payed
* \return string Libellé court du statut
*/
function PayedLibStatut($paye,$statut,$amount=0)
{
global $langs;
$langs->load('bills');
if (! $paye)
{
if ($statut == 0) return $langs->trans('BillShortStatusDraft');
if ($statut == 3) return $langs->trans('BillStatusCanceled');
if ($amount) return $langs->trans('BillStatusStarted');
return $langs->trans('BillStatusNotPayed');
}
else
{
return $langs->trans('BillStatusPayed');
}
}
/** /**
* \brief Charge indicateurs this->nbtodo et this->nbtodolate de tableau de bord * \brief Charge indicateurs this->nbtodo et this->nbtodolate de tableau de bord
* \param user Objet user * \param user Objet user

View File

@ -23,8 +23,9 @@
/** /**
\file htdocs/fourn/paiement/fiche.php \file htdocs/fourn/paiement/fiche.php
\ingroup facture \ingroup facture, fournisseur
\brief Onglet paiement d'un paiement \brief Onglet paiement d'un paiement fournisseur
\remarks Fichier presque identique a compta/paiement/fiche.php
\version $Revision$ \version $Revision$
*/ */
@ -193,7 +194,8 @@ if ($resql)
{ {
$var=True; $var=True;
$fac_static=new FactureFournisseur($db); $facturestatic=new FactureFournisseur($db);
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
@ -202,7 +204,7 @@ if ($resql)
print '<td><a href="'.DOL_URL_ROOT.'/fourn/facture/fiche.php?facid='.$objp->facid.'">'.img_object($langs->trans('ShowBill'),'bill').' '; print '<td><a href="'.DOL_URL_ROOT.'/fourn/facture/fiche.php?facid='.$objp->facid.'">'.img_object($langs->trans('ShowBill'),'bill').' ';
print $objp->facnumber; print $objp->facnumber;
print "</a></td>\n"; print "</a></td>\n";
print '<td align="center">'.$fac_static->LibStatut($objp->paye,$objp->fk_statut).'</td>'; print '<td align="center">'.$facturestatic->LibStatut($objp->paye,$objp->fk_statut,2,1).'</td>';
print '<td><a href="'.DOL_URL_ROOT.'/fourn/fiche.php?socid='.$objp->idp.'">'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.'</a></td>'; print '<td><a href="'.DOL_URL_ROOT.'/fourn/fiche.php?socid='.$objp->idp.'">'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.'</a></td>';
print '<td align="right">'.price($objp->amount).'</td>'; print '<td align="right">'.price($objp->amount).'</td>';
print "</tr>\n"; print "</tr>\n";

View File

@ -127,6 +127,31 @@ class InterfaceDemo
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched. id=".$object->id); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched. id=".$object->id);
} }
// Products
elseif ($action == 'PRODUCT_CREATE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'PRODUCT_MODIFY')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'PRODUCT_DELETE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'ORDER_CREATE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'ORDER_MODIFY')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'ORDER_DELETE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
// Proposals // Proposals
elseif ($action == 'PROPAL_CREATE') elseif ($action == 'PROPAL_CREATE')
{ {
@ -194,28 +219,12 @@ class InterfaceDemo
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched"); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
} }
// Products // Payments
elseif ($action == 'PRODUCT_CREATE') elseif ($action == 'PAYMENT_CUSTOMER_CREATE')
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched"); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
} }
elseif ($action == 'PRODUCT_MODIFY') elseif ($action == 'PAYMENT_SUPPLIER_CREATE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'PRODUCT_DELETE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'ORDER_CREATE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'ORDER_MODIFY')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
}
elseif ($action == 'ORDER_DELETE')
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched"); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
} }

View File

@ -275,6 +275,31 @@ class InterfaceWebCal
$this->desc=$langs->trans("InvoiceCanceledInDolibarr",$object->ref); $this->desc=$langs->trans("InvoiceCanceledInDolibarr",$object->ref);
$this->desc.="\n".$langs->trans("Author").': '.$user->code; $this->desc.="\n".$langs->trans("Author").': '.$user->code;
} }
// Payments
elseif ($action == 'PAYMENT_CUSTOMER_CREATE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->trans("CustomerPaymentDoneInDolibarr",$object->ref);
$this->desc=$langs->trans("CustomerPaymentDoneInDolibarr",$object->ref);
$this->desc.="\n".$langs->trans("AmountTTC").': '.$object->total;
$this->desc.="\n".$langs->trans("Author").': '.$user->code;
}
elseif ($action == 'PAYMENT_SUPPLIER_CREATE')
{
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched");
$langs->load("other");
$this->date=time();
$this->duree=0;
$this->texte=$langs->trans("SupplierPaymentDoneInDolibarr",$object->ref);
$this->desc=$langs->trans("SupplierPaymentDoneInDolibarr",$object->ref);
$this->desc.="\n".$langs->trans("AmountTTC").': '.$object->total;
$this->desc.="\n".$langs->trans("Author").': '.$user->code;
}
// Ajoute entrée dans webcal // Ajoute entrée dans webcal
if ($this->date) if ($this->date)

View File

@ -61,6 +61,7 @@ PropalValidatedInDolibarr=Proposal %s validated in Dolibarr
InvoiceValidatedInDolibarr=Invoice %s validated in Dolibarr InvoiceValidatedInDolibarr=Invoice %s validated in Dolibarr
InvoicePayedInDolibarr=Invoice %s changed to payed in Dolibarr InvoicePayedInDolibarr=Invoice %s changed to payed in Dolibarr
InvoiceCanceledInDolibarr=Invoice %s canceled in Dolibarr InvoiceCanceledInDolibarr=Invoice %s canceled in Dolibarr
PaymentDoneInDolibarr=Payment %s done in Dolibarr
##### Export ##### ##### Export #####
ExportsArea=Exports area ExportsArea=Exports area
AvailableFormats=Available formats AvailableFormats=Available formats

View File

@ -61,6 +61,9 @@ PropalValidatedInDolibarr=Proposition %s valid
InvoiceValidatedInDolibarr=Facture %s validée dans Dolibarr InvoiceValidatedInDolibarr=Facture %s validée dans Dolibarr
InvoicePayedInDolibarr=Facture %s passée à payée dans Dolibarr InvoicePayedInDolibarr=Facture %s passée à payée dans Dolibarr
InvoiceCanceledInDolibarr=Facture %s annulée dans Dolibarr InvoiceCanceledInDolibarr=Facture %s annulée dans Dolibarr
PaymentDoneInDolibarr=Paiement %s réalisé dans Dolibarr
CustomerPaymentDoneInDolibarr=Paiement client %s dans Dolibarr
SupplierPaymentDoneInDolibarr=Paiement fournisseur %s dans Dolibarr
##### Export ##### ##### Export #####
ExportsArea=Espace exports ExportsArea=Espace exports
AvailableFormats=Formats disponibles AvailableFormats=Formats disponibles

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2006 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -25,6 +25,7 @@
\file htdocs/paiement.class.php \file htdocs/paiement.class.php
\ingroup facture \ingroup facture
\brief Fichier de la classe des paiement de factures clients \brief Fichier de la classe des paiement de factures clients
\remarks Cette classe est presque identique à paiementfourn.class.php
\version $Revision$ \version $Revision$
*/ */
@ -40,6 +41,7 @@ class Paiement
var $facid; var $facid;
var $datepaye; var $datepaye;
var $amount; var $amount;
var $total;
var $author; var $author;
var $paiementid; // Type de paiement. Stocké dans fk_paiement var $paiementid; // Type de paiement. Stocké dans fk_paiement
// de llx_paiement qui est lié aux types de // de llx_paiement qui est lié aux types de
@ -53,13 +55,12 @@ class Paiement
var $db; var $db;
/**
* \brief Constructeur de la classe
* \param DB handler accès base de données
* \param soc_idp id societe ('' par defaut)
*/
function Paiement($DB, $soc_idp='') /**
* \brief Constructeur de la classe
* \param DB handler accès base de données
*/
function Paiement($DB)
{ {
$this->db = $DB ; $this->db = $DB ;
} }
@ -109,41 +110,39 @@ class Paiement
} }
} }
/** /**
* \brief Création du paiement en base * \brief Création du paiement en base
* \param user object utilisateur qui crée * \param user object utilisateur qui crée
* \return int id du paiement crée, < 0 si erreur * \return int id du paiement crée, < 0 si erreur
*/ */
function create($user) function create($user)
{ {
$sql_err = 0; $error = 0;
// Nettoyage parametres
$value = price2num($value);
$this->total = 0;
foreach ($this->amounts as $key => $value)
{
$val = round($value, 2);
$this->amounts[$key] = $val;
$this->total += $val;
}
$this->total = price2num($this->total);
$this->db->begin(); $this->db->begin();
$total = 0.0; if ($this->total <> 0) // On accepte les montants négatifs pour les rejets de prélèvement
foreach ($this->amounts as $key => $value)
{
$val = $value;
$val = str_replace(' ','',$val);
$val = str_replace(',','.',$val);
$val = round($val, 2);
$val = str_replace(',','.',$val);
if (is_numeric($val))
{
$total += $val;
}
$this->amounts[$key] = $val;
}
$total = str_replace(',','.',$total);
if ($total <> 0) /* On accepte les montants négatifs pour les rejets de prélèvement */
{ {
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiement (datec, datep, amount, fk_paiement, num_paiement, note, fk_user_creat)'; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiement (datec, datep, amount, fk_paiement, num_paiement, note, fk_user_creat)';
$sql .= ' VALUES (now(), '.$this->datepaye.', \''.$total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.$this->note.'\', '.$user->id.')'; $sql .= ' VALUES (now(), '.$this->datepaye.', \''.$this->total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.$this->note.'\', '.$user->id.')';
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiement'); $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiement');
// Insere tableau des montants / factures
foreach ($this->amounts as $key => $amount) foreach ($this->amounts as $key => $amount)
{ {
$facid = $key; $facid = $key;
@ -154,7 +153,7 @@ class Paiement
if (! $this->db->query($sql) ) if (! $this->db->query($sql) )
{ {
dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid); dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid);
$sql_err++; $error++;
} }
} }
else else
@ -162,18 +161,28 @@ class Paiement
dolibarr_syslog('Paiement::Create Montant non numérique'); dolibarr_syslog('Paiement::Create Montant non numérique');
} }
} }
if (! $error)
{
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php");
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('PAYMENT_CUSTOMER_CREATE',$this,$user,$lang,$conf);
if ($result < 0) $error++;
// Fin appel triggers
}
} }
else else
{ {
dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement'); dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement');
$sql_err++; $error++;
} }
} }
if ( $total <> 0 && $sql_err == 0 ) // On accepte les montants négatifs if ( $this->total <> 0 && $error == 0 ) // On accepte les montants négatifs
{ {
$this->db->commit(); $this->db->commit();
dolibarr_syslog('Paiement::Create Ok Total = '.$total); dolibarr_syslog('Paiement::Create Ok Total = '.$this->total);
return $this->id; return $this->id;
} }
else else