From 55073f450668a962a531fb4a5c0b62a430a255c6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 18 Sep 2005 18:51:30 +0000 Subject: [PATCH] =?UTF-8?q?Le=20test=20sur=20saisi=20des=20param=E8tres=20?= =?UTF-8?q?(compte,=20montant,=20type=20de=20paiement)=20et=20fait=20avant?= =?UTF-8?q?=20les=20ecritures=20en=20base.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/compta/paiement.php | 222 +++++++++++++++++++------------------ 1 file changed, 112 insertions(+), 110 deletions(-) diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index 8b7b10aae17..545f4527582 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -50,140 +50,142 @@ if ($_POST["action"] == 'add_paiement') { $error = 0; - if ($_POST["paiementid"] > 0) + $datepaye = $db->idate(mktime(12, 0 , 0, + $_POST["remonth"], + $_POST["reday"], + $_POST["reyear"])); + $paiement_id = 0; + $total = 0; + // Génère tableau des montants amounts + $amounts = array(); + foreach ($_POST as $key => $value) { - $datepaye = $db->idate(mktime(12, 0 , 0, - $_POST["remonth"], - $_POST["reday"], - $_POST["reyear"])); - - $paiement_id = 0; - $total = 0; - $amounts = array(); - foreach ($_POST as $key => $value) + if (substr($key,0,7) == 'amount_') { - if (substr($key,0,7) == 'amount_') - { - $other_facid = substr($key,7); + $other_facid = substr($key,7); - $amounts[$other_facid] = $_POST[$key]; - $total = $total + $amounts[$other_facid]; - } + $amounts[$other_facid] = $_POST[$key]; + $total = $total + $amounts[$other_facid]; } + } - if ($total > 0) + // Effectue les vérifications des parametres + if ($_POST["paiementid"] <= 0) + { + $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("PaymentMode")).'
'; + $error++; + } + + if ($conf->banque->enabled) + { + // Si module bank actif, un compte est obligatoire lors de la saisie + // d'un paiement + if (! $_POST["accountid"]) { + $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("AccountToCredit")).'
'; + $error++; + } + } - $db->begin(); + if ($total <= 0) + { + $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("Amount")).'
'; + $error++; + } - // Creation de la ligne paiement - $paiement = new Paiement($db); - $paiement->datepaye = $datepaye; - $paiement->amounts = $amounts; // Tableau de montant - $paiement->paiementid = $_POST["paiementid"]; - $paiement->num_paiement = $_POST["num_paiement"]; - $paiement->note = $_POST["comment"]; + if (! $error) + { + $db->begin(); - $paiement_id = $paiement->create($user); + // Creation de la ligne paiement + $paiement = new Paiement($db); + $paiement->datepaye = $datepaye; + $paiement->amounts = $amounts; // Tableau de montant + $paiement->paiementid = $_POST["paiementid"]; + $paiement->num_paiement = $_POST["num_paiement"]; + $paiement->note = $_POST["comment"]; - if ($paiement_id > 0) + $paiement_id = $paiement->create($user); + + if ($paiement_id > 0) + { + // On determine le montant total du paiement + $total=0; + foreach ($paiement->amounts as $key => $value) { - // On determine le montant total du paiement - $total=0; - foreach ($paiement->amounts as $key => $value) + $facid = $key; + $value = trim($value); + $amount = round(ereg_replace(",",".",$value), 2); + if (is_numeric($amount)) { - $facid = $key; - $value = trim($value); - $amount = round(ereg_replace(",",".",$value), 2); - if (is_numeric($amount)) - { - $total += $amount; - } + $total += $amount; } + } - if ($conf->banque->enabled) + if ($conf->banque->enabled) + { + // Insertion dans llx_bank + $label = "Règlement facture"; + $acc = new Account($db, $_POST["accountid"]); + //paiementid contient "CHQ ou VIR par exemple" + $bank_line_id = $acc->addline($paiement->datepaye, + $paiement->paiementid, + $label, + $total, + $paiement->num_paiement, + '', + $user); + + // Mise a jour fk_bank dans llx_paiement. + // On connait ainsi le paiement qui a généré l'écriture bancaire + if ($bank_line_id > 0) { - // Si module bank actif, un compte est obligatoire lors de la saisie - // d'un paiement - if (! $_POST["accountid"]) + $paiement->update_fk_bank($bank_line_id); + + // Mise a jour liens (pour chaque facture concernées par le paiement) + foreach ($paiement->amounts as $key => $value) { - $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("AccountToCredit")).'
'; - $error++; - } - else - { - // Insertion dans llx_bank - $label = "Règlement facture"; - $acc = new Account($db, $_POST["accountid"]); - //paiementid contient "CHQ ou VIR par exemple" - $bank_line_id = $acc->addline($paiement->datepaye, - $paiement->paiementid, - $label, - $total, - $paiement->num_paiement, - '', - $user); - - - // Mise a jour fk_bank dans llx_paiement. - // On connait ainsi le paiement qui a généré l'écriture bancaire - if ($bank_line_id > 0) - { - $paiement->update_fk_bank($bank_line_id); - - // Mise a jour liens (pour chaque facture concernées par le paiement) - foreach ($paiement->amounts as $key => $value) - { - $facid = $key; - $fac = new Facture($db); - $fac->fetch($facid); - $fac->fetch_client(); - $acc->add_url_line($bank_line_id, - $paiement_id, - DOL_URL_ROOT.'/compta/paiement/fiche.php?id=', - "(paiement)", - 'payment'); - $acc->add_url_line($bank_line_id, - $fac->client->id, - DOL_URL_ROOT.'/compta/fiche.php?socid=', - $fac->client->nom, - 'company'); - } - - } - else - { - $error++; - } + $facid = $key; + $fac = new Facture($db); + $fac->fetch($facid); + $fac->fetch_client(); + $acc->add_url_line($bank_line_id, + $paiement_id, + DOL_URL_ROOT.'/compta/paiement/fiche.php?id=', + "(paiement)", + 'payment'); + $acc->add_url_line($bank_line_id, + $fac->client->id, + DOL_URL_ROOT.'/compta/fiche.php?socid=', + $fac->client->nom, + 'company'); } + + } + else + { + $error++; } - - } - else - { - $error++; } - - if ($error == 0) - { - $loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id; - $db->commit(); - Header("Location: $loc"); - } - else - { - $db->rollback(); - } } else { - $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("Amount")).'
'; + $this->error=$paiement->error; + $error++; + } + + + if ($error == 0) + { + $loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id; + $db->commit(); + Header("Location: $loc"); + } + else + { + $db->rollback(); } - } - else - { - $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("PaymentMode")).'
'; } }