diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index 545f4527582..b3504a62f3b 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -1,6 +1,7 @@ - * Copyright (C) 2004-2005 Laurent Destailleur +/* Copyright (C) 2001-2005 Rodolphe Quiedeville + * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo * * 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 @@ -27,173 +28,162 @@ \version $Revision$ */ -include_once("./pre.inc.php"); -require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -include_once(DOL_DOCUMENT_ROOT."/facture.class.php"); -include_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); +include_once('./pre.inc.php'); +require_once(DOL_DOCUMENT_ROOT.'/paiement.class.php'); +include_once(DOL_DOCUMENT_ROOT.'/facture.class.php'); +include_once(DOL_DOCUMENT_ROOT.'/compta/bank/account.class.php'); -$langs->load("bills"); -$langs->load("banks"); +$langs->load('bills'); +$langs->load('banks'); -$facid=isset($_GET["facid"])?$_GET["facid"]:$_POST["facid"]; -$socname=isset($_GET["socname"])?$_GET["socname"]:$_POST["socname"]; +$facid=isset($_GET['facid'])?$_GET['facid']:$_POST['facid']; +$socname=isset($_GET['socname'])?$_GET['socname']:$_POST['socname']; -$sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"]; -$sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"]; -$page=isset($_GET["page"])?$_GET["page"]:$_POST["page"]; +$sortfield = isset($_GET['sortfield'])?$_GET['sortfield']:$_POST['sortfield']; +$sortorder = isset($_GET['sortorder'])?$_GET['sortorder']:$_POST['sortorder']; +$page=isset($_GET['page'])?$_GET['page']:$_POST['page']; /* * Actions */ -if ($_POST["action"] == 'add_paiement') +if ($_POST['action'] == 'add_paiement') { - $error = 0; + $error = 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) - { - if (substr($key,0,7) == 'amount_') - { - $other_facid = substr($key,7); + $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) + { + if (substr($key,0,7) == 'amount_') + { + $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]; - } - } + // Effectue les vérifications des parametres + if ($_POST['paiementid'] <= 0) + { + $fiche_erreur_message = '
'.$langs->trans('ErrorFieldRequired',$langs->trans('PaymentMode')).'
'; + $error++; + } - // 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++; + } + } - 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++; - } - } + if ($total <= 0) + { + $fiche_erreur_message = '
'.$langs->trans('ErrorFieldRequired',$langs->trans('Amount')).'
'; + $error++; + } - if ($total <= 0) - { - $fiche_erreur_message = '
'.$langs->trans("ErrorFieldRequired",$langs->trans("Amount")).'
'; - $error++; - } + if (! $error) + { + $db->begin(); - if (! $error) - { - $db->begin(); + // 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']; - // 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"]; + $paiement_id = $paiement->create($user); - $paiement_id = $paiement->create($user); + if ($paiement_id > 0) + { + // On determine le montant total du paiement + $total=0; + foreach ($paiement->amounts as $value) + { + $total += $value; + } - if ($paiement_id > 0) - { - // 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)) - { - $total += $amount; - } - } + 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); - 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) + { + $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++; + } + } + } + else + { + $this->error=$paiement->error; + $error++; + } - // 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++; - } - } - - } - else - { - $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(); - } - } + if ($error == 0) + { + $loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id; + $db->commit(); + Header('Location: '.$loc); + } + else + { + $db->rollback(); + } + } } // Sécurité accés client -if ($user->societe_id > 0) +if ($user->societe_id > 0) { - $action = ''; - $socidp = $user->societe_id; + $action = ''; + $socidp = $user->societe_id; } @@ -207,229 +197,225 @@ $html=new Form($db); if ($fiche_erreur_message) { - print ''.$fiche_erreur_message.''; + print ''.$fiche_erreur_message.''; } -if ($_GET["action"] == 'create' || $_POST["action"] == 'add_paiement') +if ($_GET['action'] == 'create' || $_POST['action'] == 'add_paiement') { - $facture = new Facture($db); - $facture->fetch($facid); + $facture = new Facture($db); + $facture->fetch($facid); - $sql = "SELECT s.nom,s.idp, f.amount, f.total_ttc as total, f.facnumber"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture as f WHERE f.fk_soc = s.idp"; - $sql .= " AND f.rowid = $facid"; + $sql = 'SELECT s.nom,s.idp, f.amount, f.total_ttc as total, f.facnumber'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'facture as f WHERE f.fk_soc = s.idp'; + $sql .= ' AND f.rowid = '.$facid; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + if ($num) + { + $obj = $db->fetch_object($resql); - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - if ($num) - { - $obj = $db->fetch_object($resql); + $total = $obj->total; - $total = $obj->total; + print_titre($langs->trans('DoPayment')); - print_titre($langs->trans("DoPayment")); + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; - print ''; - print ''; - print ""; - print "facnumber\">"; - print "idp\">"; - print "nom\">"; + print ''; - print '
'; + print '\n"; - print "\n"; + print ''; + print ''; - print "'; - print ''; + print '\n"; - print '\n"; + print ''; - print ''; + print ''; - print "\n"; + if ($conf->banque->enabled) + { + print '\n"; + } + else + { + print ''; + } + /* + * Autres factures impayées + */ + $sql = 'SELECT f.rowid as facid,f.facnumber,f.total_ttc,'.$db->pdate('f.datef').' as df'; + $sql .= ', sum(pf.amount) as am'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'facture as f'; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid'; + $sql .= ' WHERE f.fk_soc = '.$facture->socidp; + $sql .= ' AND f.paye = 0'; + $sql .= ' AND f.fk_statut = 1'; // Statut=0 => non validée, Statut=2 => annulée + $sql .= ' GROUP BY f.facnumber'; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + if ($num > 0) + { + $i = 0; + print '\n"; - } - $db->free($resql); - } - else - { - dolibarr_print_error($db); - } - - /* - * - */ - print ''; - print "
'.$langs->trans('Company').''.$obj->nom."
".$langs->trans("Company")."$obj->nom
'.$langs->trans('Date').''; + if (!empty($_POST['remonth']) && !empty($_POST['reday']) && !empty($_POST['reyear'])) + $sel_date=mktime(12, 0 , 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); + else + $sel_date=''; + $html->select_date($sel_date); + print ''.$langs->trans('Comments').'
".$langs->trans("Date").""; - $html->select_date(); - print ''.$langs->trans("Comments").'
'.$langs->trans('PaymentMode').''; + $html->select_types_paiements(empty($_POST['paiementid'])?'':$_POST['paiementid'],'paiementid'); + print "
'.$langs->trans("PaymentMode").''; - $html->select_types_paiements('','paiementid'); - print "'; + print '
'; - print '
'.$langs->trans('Numero').'
Numéro du chèque / virement
".$langs->trans("Numero")."
Numéro du chèque / virement
'.$langs->trans('AccountToCredit').''; + $html->select_comptes(empty($_POST['accountid'])?'':$_POST['accountid'],'accountid',0,'',1); + print "
 
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; - if ($conf->banque->enabled) - { - print "\n"; - } - else - { - print ''; - } + $var=True; + $total=0; + $totalrecu=0; - /* - * Autres factures impayées - */ - $sql = "SELECT f.rowid as facid,f.facnumber,f.total_ttc,".$db->pdate("f.datef")." as df"; - $sql .= ", sum(pf.amount) as am"; - $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON pf.fk_facture = f.rowid"; - $sql .= " WHERE f.fk_soc = ".$facture->socidp; - $sql .= " AND f.paye = 0"; - $sql .= " AND f.fk_statut = 1"; // Statut=0 => non validée, Statut=2 => annulée - $sql .= " GROUP BY f.facnumber"; + while ($i < $num) + { + $objp = $db->fetch_object($resql); + $var=!$var; - $resql = $db->query($sql); + print ''; - if ($resql) - { - $num = $db->num_rows($resql); + print '\n"; - if ($num > 0) - { - $i = 0; - print '\n"; + } + $db->free($resql); + } + else + { + dolibarr_print_error($db); + } - print '\n"; - - if ($objp->df > 0 ) - { - print "\n"; - } - else - { - print "\n"; - } - - print '"; - print '"; - print '"; - - print '\n"; - $total+=$objp->total; - $total_ttc+=$objp->total_ttc; - $totalrecu+=$objp->am; - $i++; - } - if ($i > 1) - { - // Print total - print ''; - print ''; - print ""; - print ""; - print ""; - print ''; - print "\n"; - } - print "
'.$langs->trans('Bill').''.$langs->trans('Date').''.$langs->trans('AmountTTC').''.$langs->trans('Received').''.$langs->trans('RemainderToPay').''.$langs->trans('Amount').'
".$langs->trans("AccountToCredit").""; - $html->select_comptes('','accountid',0,'',1); - print "
 
'.img_object($langs->trans('ShowBill'),'bill').' '.$objp->facnumber; + print "
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print "\n"; + if ($objp->df > 0 ) + { + print '\n"; + } + else + { + print ''; + } - $var=True; - $total=0; - $totalrecu=0; + print ''; + print ''; + print ''; - while ($i < $num) - { - $objp = $db->fetch_object($resql); - $var=!$var; + print '\n"; - print ""; + $total+=$objp->total; + $total_ttc+=$objp->total_ttc; + $totalrecu+=$objp->am; + $i++; + } + if ($i > 1) + { + // Print total + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + } + print "
'.$langs->trans("Bill").''.$langs->trans("Date").''.$langs->trans("AmountTTC").''.$langs->trans("Received").''.$langs->trans("RemainderToPay").''.$langs->trans("Amount").'
'; + print dolibarr_print_date($objp->df)."!!!'.price($objp->total_ttc).''.price($objp->am).''.price($objp->total_ttc - $objp->am).''; + $namef = 'amount_'.$objp->facid; + print ''; + print "
'.$langs->trans('TotalTTC').':'.price($total_ttc).''.price($totalrecu).''.price($total_ttc - $totalrecu).' 
'.img_object($langs->trans("ShowBill"),"bill").' '.$objp->facnumber; - print ""; - print strftime("%d %b %Y",$objp->df)."!!!'.price($objp->total_ttc)."'.price($objp->am)."'.price($objp->total_ttc - $objp->am)."'; - - $namef = "amount_".$objp->facid; - print ''; - - print "
'.$langs->trans("TotalTTC").':".price($total_ttc)."".price($totalrecu)."".price($total_ttc - $totalrecu)." 
"; - print "
\n"; - } - } -} + /* + * + */ + print ''; + print ''; + print "\n"; + } + } +} /** * \brief Affichage de la liste des paiement */ -if (! $_GET["action"] && ! $_POST["action"]) +if (! $_GET['action'] && ! $_POST['action']) { - - if ($page == -1) $page = 0 ; - $limit = $conf->liste_limit; - $offset = $limit * $page ; - - if (! $sortorder) $sortorder="DESC"; - if (! $sortfield) $sortfield="p.datep"; - - $sql = "SELECT ".$db->pdate("p.datep")." as dp, p.amount, f.amount as fa_amount, f.facnumber"; - $sql .=", f.rowid as facid, c.libelle as paiement_type, p.num_paiement"; - $sql .= " FROM ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."c_paiement as c"; - $sql .= " WHERE p.fk_facture = f.rowid AND p.fk_paiement = c.id"; - - if ($socidp) - { - $sql .= " AND f.fk_soc = $socidp"; - } - - $sql .= " ORDER BY $sortfield $sortorder"; - $sql .= $db->plimit( $limit +1 ,$offset); - $resql = $db->query($sql); - - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - $var=True; - - print_barre_liste($langs->trans("Payments"), $page, "paiement.php","",$sortfield,$sortorder,'',$num); + if ($page == -1) $page = 0 ; + $limit = $conf->liste_limit; + $offset = $limit * $page ; - print ''; - print ''; - print_liste_field_titre($langs->trans("Bill"),"paiement.php","facnumber","","","",$sortfield); - print_liste_field_titre($langs->trans("Date"),"paiement.php","dp","","","",$sortfield); - print_liste_field_titre($langs->trans("Type"),"paiement.php","libelle","","","",$sortfield); - print_liste_field_titre($langs->trans("Amount"),"paiement.php","fa_amount","","",'align="right"',$sortfield); - print ""; - print "\n"; - - while ($i < min($num,$limit)) + if (! $sortorder) $sortorder='DESC'; + if (! $sortfield) $sortfield='p.datep'; + + $sql = 'SELECT '.$db->pdate('p.datep').' as dp, p.amount, f.amount as fa_amount, f.facnumber'; + $sql .=', f.rowid as facid, c.libelle as paiement_type, p.num_paiement'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement as p, '.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'c_paiement as c'; + $sql .= ' WHERE p.fk_facture = f.rowid AND p.fk_paiement = c.id'; + + if ($socidp) { - $objp = $db->fetch_object($resql); - $var=!$var; - print ""; - print "\n"; - print "\n"; - print "\n"; - print ''; - print ""; - $i++; + $sql .= ' AND f.fk_soc = '.$socidp; + } + + $sql .= ' ORDER BY '.$sortfield.' '.$sortorder; + $sql .= $db->plimit( $limit +1 ,$offset); + $resql = $db->query($sql); + + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + $var=True; + + print_barre_liste($langs->trans('Payments'), $page, 'paiement.php','',$sortfield,$sortorder,'',$num); + print '
 
facid\">$objp->facnumber".strftime("%d %B %Y",$objp->dp)."$objp->paiement_type $objp->num_paiement'.price($objp->amount).' 
'; + print ''; + print_liste_field_titre($langs->trans('Bill'),'paiement.php','facnumber','','','',$sortfield); + print_liste_field_titre($langs->trans('Date'),'paiement.php','dp','','','',$sortfield); + print_liste_field_titre($langs->trans('Type'),'paiement.php','libelle','','','',$sortfield); + print_liste_field_titre($langs->trans('Amount'),'paiement.php','fa_amount','','','align="right"',$sortfield); + print ''; + print "\n"; + + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print ''; + print '\n"; + print '\n"; + print '\n"; + print ''; + print ''; + $i++; + } + print '
 
'.$objp->facnumber."'.dolibarr_print_date($objp->dp)."'.$objp->paiement_type.' '.$objp->num_paiement."'.price($objp->amount).' 
'; } - print ""; - } } $db->close(); -llxFooter("Dernière modification $Date$ révision $Revision$"); +llxFooter('Dernière modification $Date$ révision $Revision$'); ?> diff --git a/htdocs/compta/paiement/fiche.php b/htdocs/compta/paiement/fiche.php index e79c0e48be7..4a6e426f14f 100644 --- a/htdocs/compta/paiement/fiche.php +++ b/htdocs/compta/paiement/fiche.php @@ -1,6 +1,7 @@ * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo * * 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 @@ -27,36 +28,54 @@ \version $Revision$ */ -require("./pre.inc.php"); -require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -require_once(DOL_DOCUMENT_ROOT."/facture.class.php"); +require('./pre.inc.php'); +require_once(DOL_DOCUMENT_ROOT.'/paiement.class.php'); +require_once(DOL_DOCUMENT_ROOT.'/facture.class.php'); $user->getrights('facture'); -$langs->load("bills"); -$langs->load("banks"); -$langs->load("companies"); +$langs->load('bills'); +$langs->load('banks'); +$langs->load('companies'); -if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes' && $user->rights->facture->creer) +if ($_POST['action'] == 'confirm_delete' && $_POST['confirm'] == 'yes' && $user->rights->facture->creer) { - $paiement = new Paiement($db); - $paiement->id = $_GET["id"]; - if ( $paiement->delete() ) - { - Header("Location: liste.php"); - } + $paiement = new Paiement($db); + $paiement->fetch($_GET['id']); + $bank_line_id = $paiement->bank_line; + $deleted = $paiement->delete(); + if ($deleted) + { + // Supprimer l'écriture bancaire + if (!empty($bank_line_id)) + { + $acc = new Account($db); + $acc->deleteline($bank_line_id); + Header('Location: liste.php'); + } + else + { + print 'bank_line_id='.$bank_line_id; + exit; + } + } + else + { + print 'deleted='.$deleted; + exit; + } } -if ($_POST["action"] == 'confirm_valide' && $_POST["confirm"] == 'yes' && $user->rights->facture->creer) +if ($_POST['action'] == 'confirm_valide' && $_POST['confirm'] == 'yes' && $user->rights->facture->creer) { - $paiement = new Paiement($db); - $paiement->id = $_GET["id"]; - if ( $paiement->valide() == 0 ) - { - Header("Location: fiche.php?id=".$paiement->id); - } + $paiement = new Paiement($db); + $paiement->id = $_GET['id']; + if ( $paiement->valide() == 0 ) + { + Header('Location: fiche.php?id='.$paiement->id); + } } @@ -69,8 +88,8 @@ llxHeader(); print ''; print '
'; @@ -81,43 +100,47 @@ print '
'; */ $paiement = new Paiement($db); -$paiement->fetch($_GET["id"]); +$paiement->fetch($_GET['id']); $html = new Form($db); /* * Confirmation de la suppression du paiement */ -if ($_GET["action"] == 'delete') +if ($_GET['action'] == 'delete') { - $html->form_confirm("fiche.php?id=$paiement->id","Supprimer le paiement","Etes-vous sûr de vouloir supprimer ce paiement ?","confirm_delete"); - print '
'; + $html->form_confirm('fiche.php?id='.$paiement->id, 'Supprimer le paiement', 'Etes-vous sûr de vouloir supprimer ce paiement ?', 'confirm_delete'); + print '
'; } /* * Confirmation de la validation du paiement */ -if ($_GET["action"] == 'valide') +if ($_GET['action'] == 'valide') { - $html->form_confirm("fiche.php?id=$paiement->id","Valider le paiement","Etes-vous sûr de vouloir valider ce paiment, auncune modification n'est possible une fois le paiement validé ?","confirm_valide"); - print '
'; + $html->form_confirm('fiche.php?id='.$paiement->id, 'Valider le paiement', 'Etes-vous sûr de vouloir valider ce paiment, auncune modification n\'est possible une fois le paiement validé ?', 'confirm_valide'); + print '
'; } print ''; -print ''; -if ($paiement->bank_account) { - // Si compte renseigné, on affiche libelle - print ''; +print ''; +if ($paiement->bank_account) +{ + // Si compte renseigné, on affiche libelle + print ''; } -print ''; -print ''; -if ($paiement->numero) { print ''; } -print ''; -print ''; -print "
'.$langs->trans("Ref").''.$paiement->id.'
'; - $bank=new Account($db); - $bank->fetch($paiement->bank_account); - print $langs->trans("BankAccount").''.$bank->label.'
'.$langs->trans('Ref').''.$paiement->id.'
'; + $bank=new Account($db); + $bank->fetch($paiement->bank_account); + print $langs->trans('BankAccount').''.$bank->label.'
'.$langs->trans("Date").''.dolibarr_print_date($paiement->date).'
'.$langs->trans("Type").''.$paiement->type_libelle.'
'.$langs->trans("Numero").''.$paiement->numero.'
'.$langs->trans("Amount").''.$paiement->montant." ".$langs->trans("Currency".$conf->monnaie).'
'.$langs->trans("Note").''.nl2br($paiement->note).'
"; +print ''.$langs->trans('Date').''.dolibarr_print_date($paiement->date).''; +print ''.$langs->trans('Type').''.$paiement->type_libelle.''; +if ($paiement->numero) +{ + print ''.$langs->trans('Numero').''.$paiement->numero.''; +} +print ''.$langs->trans('Amount').''.price($paiement->montant).' '.$langs->trans('Currency'.$conf->monnaie).''; +print ''.$langs->trans('Note').''.nl2br($paiement->note).''; +print ''; /* @@ -125,59 +148,59 @@ print ""; * */ $allow_delete = 1 ; -$sql = "SELECT f.facnumber, f.total_ttc, pf.amount, f.rowid as facid, f.paye, f.fk_statut, s.nom, s.idp"; -$sql .= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf,".MAIN_DB_PREFIX."facture as f,".MAIN_DB_PREFIX."societe as s"; -$sql .= " WHERE pf.fk_facture = f.rowid AND f.fk_soc = s.idp"; -$sql .= " AND pf.fk_paiement = ".$paiement->id; +$sql = 'SELECT f.facnumber, f.total_ttc, pf.amount, f.rowid as facid, f.paye, f.fk_statut, s.nom, s.idp'; +$sql .= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf,'.MAIN_DB_PREFIX.'facture as f,'.MAIN_DB_PREFIX.'societe as s'; +$sql .= ' WHERE pf.fk_facture = f.rowid AND f.fk_soc = s.idp'; +$sql .= ' AND pf.fk_paiement = '.$paiement->id; if ($db->query($sql)) { - $num = $db->num_rows(); + $num = $db->num_rows(); - $i = 0; - $total = 0; - print '
'; - print ''; - print ''; - print ''; - print "\n"; + $i = 0; + $total = 0; + print '
'.$langs->trans("Bill").''.$langs->trans("Company").''.$langs->trans("AmountTTC").''.$langs->trans("Status").'
'; + print ''; + print ''; + print ''; + print "\n"; - if ($num > 0) - { - $var=True; - - while ($i < $num) + if ($num > 0) { - $objp = $db->fetch_object(); - $var=!$var; - - print ""; - print '\n"; - print ''; - print ''; - $fac=new Facture($db); - print ''; - print "\n"; - if ($objp->paye == 1) - { - $allow_delete = 0; - } - $total = $total + $objp->amount; - $i++; - } - } - $var=!$var; + $var=True; + + while ($i < $num) + { + $objp = $db->fetch_object(); + $var=!$var; + print ''; + print '\n"; + print ''; + print ''; + $fac=new Facture($db); + print ''; + print "\n"; + if ($objp->paye == 1) + { + $allow_delete = 0; + } + $total = $total + $objp->amount; + $i++; + } + } + $var=!$var; - print "
'.$langs->trans('Bill').''.$langs->trans('Company').''.$langs->trans('AmountTTC').''.$langs->trans('Status').'
'.img_object($langs->trans("ShowBill"),"bill").' '; - print $objp->facnumber; - print "'.img_object($langs->trans("ShowCompany"),"company").' '.$objp->nom.''.price($objp->amount).''.$fac->LibStatut($objp->paye,$objp->fk_statut).'
'.img_object($langs->trans('ShowBill'),'bill').' '; + print $objp->facnumber; + print "'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.''.price($objp->amount).''.$fac->LibStatut($objp->paye,$objp->fk_statut).'
\n"; - $db->free(); + print "\n"; + $db->free(); } -else { - dolibarr_print_error($db); +else +{ + dolibarr_print_error($db); } -print "
"; +print '
'; /* @@ -186,17 +209,17 @@ print ""; print '
'; -if ($user->societe_id == 0 && $paiement->statut == 0 && $_GET["action"] == '') +if ($user->societe_id == 0 && $paiement->statut == 0 && $_GET['action'] == '') { - print ''.$langs->trans("Valid").''; + print ''.$langs->trans('Valid').''; } -if ($user->societe_id == 0 && $allow_delete && $paiement->statut == 0 && $_GET["action"] == '') +if ($user->societe_id == 0 && $allow_delete && $paiement->statut == 0 && $_GET['action'] == '') { - print ''.$langs->trans("Delete").''; + print ''.$langs->trans('Delete').''; } -print "
"; +print ''; $db->close(); diff --git a/htdocs/paiement.class.php b/htdocs/paiement.class.php index 5acbd996144..36f7c7ded2c 100644 --- a/htdocs/paiement.class.php +++ b/htdocs/paiement.class.php @@ -1,6 +1,7 @@ - * Copyright (C) 2004-2005 Laurent Destailleur +/* Copyright (C) 2002-2004 Rodolphe Quiedeville + * Copyright (C) 2004-2005 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo * * 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 @@ -33,162 +34,154 @@ \brief Classe permettant la gestion des paiements des factures clients */ -class Paiement +class Paiement { - var $id; - var $db; - var $facid; - var $datepaye; - var $amount; - var $author; - var $paiementid; // Type de paiement. Stocké dans fk_paiement - // de llx_paiement qui est lié aux types de - //paiement de llx_c_paiement - var $num_paiement; // Numéro du CHQ, VIR, etc... - var $bank_account; // Id compte bancaire du paiement - var $note; - // fk_paiement dans llx_paiement est l'id du type de paiement (7 pour CHQ, ...) - // fk_paiement dans llx_paiement_facture est le rowid du paiement + var $id; + var $db; + var $facid; + var $datepaye; + var $amount; + var $author; + var $paiementid; // Type de paiement. Stocké dans fk_paiement + // de llx_paiement qui est lié aux types de + //paiement de llx_c_paiement + var $num_paiement; // Numéro du CHQ, VIR, etc... + var $bank_account; // Id compte bancaire du paiement + var $bank_line; // Id de la ligne d'écriture bancaire + var $note; + // fk_paiement dans llx_paiement est l'id du type de paiement (7 pour CHQ, ...) + // fk_paiement dans llx_paiement_facture est le rowid du paiement /** * \brief Constructeur de la classe * \param DB handler accès base de données - * \param soc_idp id societe ("" par defaut) + * \param soc_idp id societe ('' par defaut) */ - - function Paiement($DB, $soc_idp="") - { - $this->db = $DB ; - } + + function Paiement($DB, $soc_idp='') + { + $this->db = $DB ; + } /** * \brief Récupère l'objet paiement * \param id id du paiement a récupérer */ - - function fetch($id) - { - $sql = "SELECT p.rowid,".$this->db->pdate("p.datep")." as dp, p.amount, p.statut"; - $sql .=", c.libelle as paiement_type"; - $sql .= ", p.num_paiement, p.note, b.fk_account"; - $sql .= " FROM ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as c "; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON p.fk_bank = b.rowid "; - $sql .= " WHERE p.fk_paiement = c.id"; - $sql .= " AND p.rowid = ".$id; - if ($this->db->query($sql)) + function fetch($id) { - if ($this->db->num_rows()) - { - $obj = $this->db->fetch_object(); + $sql = 'SELECT p.rowid,'.$this->db->pdate('p.datep').' as dp, p.amount, p.statut, p.fk_bank'; + $sql .=', c.libelle as paiement_type'; + $sql .= ', p.num_paiement, p.note, b.fk_account'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement as p, '.MAIN_DB_PREFIX.'c_paiement as c '; + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid '; + $sql .= ' WHERE p.fk_paiement = c.id'; + $sql .= ' AND p.rowid = '.$id; - $this->id = $obj->rowid; - $this->date = $obj->dp; - $this->numero = $obj->num_paiement; - $this->bank_account = $obj->fk_account; - - $this->montant = $obj->amount; - $this->note = $obj->note; - $this->type_libelle = $obj->paiement_type; - $this->statut = $obj->statut; - - return 1; - } - else - { - return 0; - } - $this->db->free(); + if ($this->db->query($sql)) + { + if ($this->db->num_rows()) + { + $obj = $this->db->fetch_object(); + $this->id = $obj->rowid; + $this->date = $obj->dp; + $this->numero = $obj->num_paiement; + $this->bank_account = $obj->fk_account; + $this->bank_line = $obj->fk_bank; + $this->montant = $obj->amount; + $this->note = $obj->note; + $this->type_libelle = $obj->paiement_type; + $this->statut = $obj->statut; + return 1; + } + else + { + return 0; + } + $this->db->free(); + } + else + { + dolibarr_print_error($this->db); + return 0; + } } - else - { - dolibarr_print_error($this->db); - return 0; - } - } /** * \brief Création du paiement en base * \param user object utilisateur qui crée * \return int id du paiement crée, < 0 si erreur */ - - function create($user) - { - $total = 0; - $sql_err = 0; - - $this->db->begin(); - - foreach ($this->amounts as $key => $value) - { - $facid = $key; - $value = trim($value); - $amount = ereg_replace(",",".",round($value, 2)); - - if (is_numeric($amount)) - { - $total += $amount; - } - } - - $total = ereg_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 .= " VALUES (now(), $this->datepaye, '$total', $this->paiementid, '$this->num_paiement', '$this->note', $user->id)"; - - if ( $this->db->query($sql) ) - { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."paiement"); - - foreach ($this->amounts as $key => $value) - { - $facid = $key; - $value = trim($value); - $amount = ereg_replace(",",".",round($value, 2)); - - if (is_numeric($amount) && $amount <> 0) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."paiement_facture (fk_facture, fk_paiement, amount)"; - $sql .= " VALUES ('".$facid."','". $this->id."','". $amount."')"; - - if (! $this->db->query($sql) ) - { - dolibarr_syslog("Paiement::Create Erreur INSERT dans paiement_facture ".$facid); - $sql_err++; - } - } - else - { - dolibarr_syslog("Paiement::Create Montant non numérique"); - } - } - - } - else - { - dolibarr_syslog("Paiement::Create Erreur INSERT dans paiement"); - $sql_err++; - } - } - - if ( $total <> 0 && $sql_err == 0 ) // On accepte les montants négatifs - { - $this->db->commit(); - dolibarr_syslog("Paiement::Create Ok Total = $total"); - return $this->id; - } - else - { - $this->db->rollback(); - dolibarr_syslog("Paiement::Create Erreur"); - return -1; - } - - } + + function create($user) + { + $sql_err = 0; + + $this->db->begin(); + + $total = 0.0; + 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 .= ' VALUES (now(), '.$this->datepaye.', \''.$total.'\', '.$this->paiementid.', \''.$this->num_paiement.'\', \''.$this->note.'\', '.$user->id.')'; + $resql = $this->db->query($sql); + if ($resql) + { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiement'); + foreach ($this->amounts as $key => $amount) + { + $facid = $key; + if (is_numeric($amount) && $amount <> 0) + { + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiement_facture (fk_facture, fk_paiement, amount)'; + $sql .= ' VALUES ('.$facid.','. $this->id.',\''.$amount.'\')'; + if (! $this->db->query($sql) ) + { + dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement_facture '.$facid); + $sql_err++; + } + } + else + { + dolibarr_syslog('Paiement::Create Montant non numérique'); + } + } + } + else + { + dolibarr_syslog('Paiement::Create Erreur INSERT dans paiement'); + $sql_err++; + } + } + + if ( $total <> 0 && $sql_err == 0 ) // On accepte les montants négatifs + { + $this->db->commit(); + dolibarr_syslog('Paiement::Create Ok Total = '.$total); + return $this->id; + } + else + { + $this->db->rollback(); + dolibarr_syslog('Paiement::Create Erreur'); + return -1; + } + } /** * \brief Affiche la liste des modes de paiement possible @@ -196,134 +189,128 @@ class Paiement * \param filtre filtre sur un sens de paiement particulier, norme ISO (CRDT=Mode propre à un crédit, DBIT=mode propre à un débit) * \param id ??? */ - function select($name, $filtre='', $id='') - { - $form = new Form($this->db); + function select($name, $filtre='', $id='') + { + $form = new Form($this->db); - if ($filtre == 'CRDT') - { - $sql = "SELECT id, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 AND type IN (0,2) ORDER BY libelle"; - } - elseif ($filtre == 'DBIT') - { - $sql = "SELECT id, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 AND type IN (1,2) ORDER BY libelle"; - } - else - { - $sql = "SELECT id, libelle FROM ".MAIN_DB_PREFIX."c_paiement WHERE active=1 ORDER BY libelle"; - } - $form->select($name, $sql, $id); - } + if ($filtre == 'CRDT') + { + $sql = 'SELECT id, libelle FROM '.MAIN_DB_PREFIX.'c_paiement WHERE active=1 AND type IN (0,2) ORDER BY libelle'; + } + elseif ($filtre == 'DBIT') + { + $sql = 'SELECT id, libelle FROM '.MAIN_DB_PREFIX.'c_paiement WHERE active=1 AND type IN (1,2) ORDER BY libelle'; + } + else + { + $sql = 'SELECT id, libelle FROM '.MAIN_DB_PREFIX.'c_paiement WHERE active=1 ORDER BY libelle'; + } + $form->select($name, $sql, $id); + } /** * * * */ - - function delete() - { - $sql = "DELETE FROM llx_paiement_facture WHERE fk_paiement = ".$this->id; - - $result = $this->db->query($sql); - - if ($result) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiement WHERE rowid = ".$this->id; - - $result = $this->db->query($sql); - - return 1; - } - else - { - dolibarr_print_error($this->db); - return 0; - } - } - + + function delete() + { + $this->db->begin(); + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'paiement_facture WHERE fk_paiement = '.$this->id; + $result = $this->db->query($sql); + if ($result) + { + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'paiement WHERE rowid = '.$this->id; + $result = $this->db->query($sql); + $this->db->commit(); + return 1; + } + else + { + dolibarr_print_error($this->db); + $this->db->rollback(); + return 0; + } + } + /* * Mise a jour du lien entre le paiement et la ligne générée dans llx_bank * */ - - function update_fk_bank($id_bank) - { - $sql = "UPDATE llx_paiement set fk_bank = ".$id_bank." where rowid = ".$this->id; - $result = $this->db->query($sql); - if ($result) - { - return 1; - } - else - { - dolibarr_print_error($this->db); - return 0; - } - } + + function update_fk_bank($id_bank) + { + $sql = 'UPDATE llx_paiement set fk_bank = '.$id_bank.' where rowid = '.$this->id; + $result = $this->db->query($sql); + if ($result) + { + return 1; + } + else + { + dolibarr_print_error($this->db); + return 0; + } + } /** * \brief Valide le paiement */ - function valide() - { - $sql = "UPDATE ".MAIN_DB_PREFIX."paiement SET statut = 1 WHERE rowid = ".$this->id; - $result = $this->db->query($sql); - - if ($result) - { - return 0; - } - else - { - dolibarr_syslog("Paiement::Valide Error -1"); - return -1; - } - } + function valide() + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'paiement SET statut = 1 WHERE rowid = '.$this->id; + $result = $this->db->query($sql); + if ($result) + { + return 0; + } + else + { + dolibarr_syslog('Paiement::Valide Error -1'); + return -1; + } + } /* * \brief Information sur l'objet * \param id id du paiement dont il faut afficher les infos */ - - function info($id) - { - $sql = "SELECT c.rowid, ".$this->db->pdate("datec")." as datec, fk_user_creat, fk_user_modif"; - $sql .= ", ".$this->db->pdate("tms")." as tms"; - $sql .= " FROM ".MAIN_DB_PREFIX."paiement as c"; - $sql .= " WHERE c.rowid = $id"; - - if ($this->db->query($sql)) + + function info($id) { - if ($this->db->num_rows()) - { - $obj = $this->db->fetch_object(); - - $this->id = $obj->idp; - - if ($obj->fk_user_creat) { - $cuser = new User($this->db, $obj->fk_user_creat); - $cuser->fetch(); - $this->user_creation = $cuser; - } - - if ($obj->fk_user_modif) { - $muser = new User($this->db, $obj->fk_user_modif); - $muser->fetch(); - $this->user_modification = $muser; - } - - $this->date_creation = $obj->datec; - $this->date_modification = $obj->tms; - - } - $this->db->free(); + $sql = 'SELECT c.rowid, '.$this->db->pdate('datec').' as datec, fk_user_creat, fk_user_modif'; + $sql .= ', '.$this->db->pdate('tms').' as tms'; + $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement as c'; + $sql .= ' WHERE c.rowid = '.$id; + if ($this->db->query($sql)) + { + if ($this->db->num_rows()) + { + $obj = $this->db->fetch_object(); + $this->id = $obj->idp; + if ($obj->fk_user_creat) + { + $cuser = new User($this->db, $obj->fk_user_creat); + $cuser->fetch(); + $this->user_creation = $cuser; + } + if ($obj->fk_user_modif) + { + $muser = new User($this->db, $obj->fk_user_modif); + $muser->fetch(); + $this->user_modification = $muser; + } + $this->date_creation = $obj->datec; + $this->date_modification = $obj->tms; + } + $this->db->free(); + } + else + { + dolibarr_print_error($this->db); + } } - else - { - dolibarr_print_error($this->db); - } - } } ?>