Qual: Le statut des factures avait un cycle de vie qui était 0=brouillon puis 1=validé. C'était un autre champ qui servait pour définir le 3eme état, facturé traité (car payé). Cet autre champ reste alimenté mais maintenant en plus le champ statut est passé à 2="traité" ou 3="abandonné" (car remplacée par une autre facture). Le suivi du cycle de vie d'une facture devient plus simple et plus rigoureux. On peut se baser sur le statut uniquement comme pour les autres entités.

This commit is contained in:
Laurent Destailleur 2007-02-20 15:22:41 +00:00
parent cf8d15fd5f
commit 2b37dea3f1
4 changed files with 505 additions and 511 deletions

View File

@ -267,18 +267,7 @@ if ($_POST['action'] == 'confirm_payed_partially' && $_POST['confirm'] == 'yes'
$close_note=$_POST["close_note"]; $close_note=$_POST["close_note"];
if ($close_code) if ($close_code)
{ {
if ($close_code == 'abandon') $result = $fac->set_payed($user,$close_code,$close_note);
{
$result = $fac->set_canceled($user,$close_code,$close_note);
}
elseif ($close_code == 'badcustomer')
{
$result = $fac->set_canceled($user,$close_code,$close_note);
}
else
{
$result = $fac->set_payed($user,$close_code,$close_note);
}
} }
else else
{ {

File diff suppressed because it is too large Load Diff

View File

@ -137,13 +137,15 @@ class Paiement
if ($this->total <> 0) // On accepte les montants négatifs pour les rejets de prélèvement if ($this->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->db->idate($this->datepaye).', \''.$this->total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.$this->note.'\', '.$user->id.')'; $sql .= ' VALUES (now(), '.$this->db->idate($this->datepaye).', \''.$this->total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.addslashes($this->note).'\', '.$user->id.')';
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
dolibarr_syslog("Paiement::Create sql=".$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 // Insere liens montants / factures
foreach ($this->amounts as $key => $amount) foreach ($this->amounts as $key => $amount)
{ {
$facid = $key; $facid = $key;
@ -152,7 +154,10 @@ class Paiement
$amount = price2num($amount); $amount = price2num($amount);
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiement_facture (fk_facture, fk_paiement, amount)'; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiement_facture (fk_facture, fk_paiement, amount)';
$sql .= ' VALUES ('.$facid.','. $this->id.',\''.$amount.'\')'; $sql .= ' VALUES ('.$facid.','. $this->id.',\''.$amount.'\')';
if (! $this->db->query($sql) )
dolibarr_syslog("Paiement::Create sql=".$sql);
$resql=$this->db->query($sql);
if (! $resql)
{ {
dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid); dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid);
$error++; $error++;
@ -208,14 +213,14 @@ class Paiement
$this->db->begin(); $this->db->begin();
// Vérifier si paiement porte pas sur une facture à l'état payée // Vérifier si paiement porte pas sur une facture classée
// Si c'est le cas, on refuse la suppression // Si c'est le cas, on refuse la suppression
$billsarray=$this->getBillsArray('paye=1'); $billsarray=$this->getBillsArray('fk_statut > 1');
if (is_array($billsarray)) if (is_array($billsarray))
{ {
if (sizeof($billsarray)) if (sizeof($billsarray))
{ {
$this->error="Impossible de supprimer un paiement portant sur au moins une facture à l'état payé"; $this->error="Impossible de supprimer un paiement portant sur au moins une facture fermée";
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }

View File

@ -769,6 +769,8 @@ alter table llx_adherent add column phone_perso varchar(30) after phone;
alter table llx_adherent add column phone_mobile varchar(30) after phone_perso; alter table llx_adherent add column phone_mobile varchar(30) after phone_perso;
update llx_facture set fk_facture_source=null where fk_facture_source is not null and type = 0; update llx_facture set fk_facture_source=null where fk_facture_source is not null and type = 0;
update llx_facture set fk_statut=2 where paye=1;
update llx_facture set fk_statut=2 where close_code is not null and close_code != '' and close_code != 'replaced';
update llx_boxes set fk_user = 0 where fk_user IS NULL; update llx_boxes set fk_user = 0 where fk_user IS NULL;