Debut correction pour gestion cas utilisation no UCIN06
This commit is contained in:
parent
f2797c7d0b
commit
5ea6cf58ae
3
.settings/org.eclipse.core.resources.prefs
Normal file
3
.settings/org.eclipse.core.resources.prefs
Normal file
@ -0,0 +1,3 @@
|
||||
#Sun Nov 25 21:04:17 GMT 2007
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=ISO-8859-1
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2002-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004 Éric Seigne <eric.seigne@ryxeo.com>
|
||||
* Copyright (C) 2004 <EFBFBD>ric Seigne <eric.seigne@ryxeo.com>
|
||||
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
|
||||
@ -26,7 +26,7 @@
|
||||
/**
|
||||
\file htdocs/compta/facture.php
|
||||
\ingroup facture
|
||||
\brief Page de création d'une facture
|
||||
\brief Page de cr<EFBFBD>ation d'une facture
|
||||
\version $Revision$
|
||||
*/
|
||||
|
||||
@ -57,21 +57,21 @@ $sall=isset($_GET['sall'])?trim($_GET['sall']):trim($_POST['sall']);
|
||||
$mesg=isset($_GET['mesg'])?urldecode($_GET['mesg']):'';
|
||||
$socid=isset($_GET['socid'])?$_GET['socid']:$_POST['socid'];
|
||||
|
||||
// Sécurité accés client
|
||||
// S<EFBFBD>curit<EFBFBD> acc<63>s client
|
||||
if ($user->societe_id > 0)
|
||||
{
|
||||
$action = '';
|
||||
$socid = $user->societe_id;
|
||||
}
|
||||
|
||||
// Récupération de l'id de projet
|
||||
// R<EFBFBD>cup<EFBFBD>ration de l'id de projet
|
||||
$projetid = 0;
|
||||
if ($_GET["projetid"])
|
||||
{
|
||||
$projetid = $_GET["projetid"];
|
||||
}
|
||||
|
||||
// Nombre de ligne pour choix de produit/service prédéfinis
|
||||
// Nombre de ligne pour choix de produit/service pr<EFBFBD>d<EFBFBD>finis
|
||||
$NBLINES=4;
|
||||
|
||||
|
||||
@ -137,7 +137,7 @@ if ($_GET['action'] == 'valid')
|
||||
// On verifie signe facture
|
||||
if ($facture->type == 2)
|
||||
{
|
||||
// Si avoir, le signe doit etre négatif
|
||||
// Si avoir, le signe doit etre n<EFBFBD>gatif
|
||||
if ($facture->total_ht >= 0)
|
||||
{
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorInvoiceAvoirMustBeNegative").'</div>';
|
||||
@ -222,7 +222,7 @@ if ($_POST['action'] == 'set_ref_client')
|
||||
$facture->set_ref_client($_POST['ref_client']);
|
||||
}
|
||||
|
||||
// Classe à "validée"
|
||||
// Classe <EFBFBD> "valid<69>e"
|
||||
if ($_POST['action'] == 'confirm_valid' && $_POST['confirm'] == 'yes' && $user->rights->facture->valider)
|
||||
{
|
||||
$fac = new Facture($db);
|
||||
@ -251,7 +251,7 @@ if ($_GET['action'] == 'modif' && $user->rights->facture->modifier && $conf->glo
|
||||
$fac = new Facture($db);
|
||||
$fac->fetch($_GET['facid']);
|
||||
|
||||
// On vérifie si la facture a des paiements
|
||||
// On v<EFBFBD>rifie si la facture a des paiements
|
||||
$sql = 'SELECT pf.amount';
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf';
|
||||
$sql.= ' WHERE pf.fk_facture = '.$fac->id;
|
||||
@ -273,24 +273,24 @@ if ($_GET['action'] == 'modif' && $user->rights->facture->modifier && $conf->glo
|
||||
|
||||
$resteapayer = $fac->total_ttc - $totalpaye;
|
||||
|
||||
// On vérifie si les lignes de factures ont été exportées en compta et/ou ventilées
|
||||
// On v<EFBFBD>rifie si les lignes de factures ont <20>t<EFBFBD> export<72>es en compta et/ou ventil<69>es
|
||||
$ventilExportCompta = $fac->getVentilExportCompta();
|
||||
|
||||
// On vérifie si aucun paiement n'a été effectué
|
||||
// On v<EFBFBD>rifie si aucun paiement n'a <20>t<EFBFBD> effectu<74>
|
||||
if ($resteapayer == $fac->total_ttc && $fac->paye == 0 && $ventilExportCompta == 0)
|
||||
{
|
||||
$fac->set_draft($user);
|
||||
}
|
||||
}
|
||||
|
||||
// Classe à "payée"
|
||||
// Classe <EFBFBD> "pay<61>e"
|
||||
if ($_POST['action'] == 'confirm_payed' && $_POST['confirm'] == 'yes' && $user->rights->facture->paiement)
|
||||
{
|
||||
$fac = new Facture($db);
|
||||
$fac->fetch($_GET['facid']);
|
||||
$result = $fac->set_payed($user);
|
||||
}
|
||||
// Classe à "payée partiellement"
|
||||
// Classe <EFBFBD> "pay<61>e partiellement"
|
||||
if ($_POST['action'] == 'confirm_payed_partially' && $_POST['confirm'] == 'yes' && $user->rights->facture->paiement)
|
||||
{
|
||||
$fac = new Facture($db);
|
||||
@ -306,7 +306,7 @@ if ($_POST['action'] == 'confirm_payed_partially' && $_POST['confirm'] == 'yes'
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->trans("Reason")).'</div>';
|
||||
}
|
||||
}
|
||||
// Classe à "abandonnée"
|
||||
// Classe <EFBFBD> "abandonn<6E>e"
|
||||
if ($_POST['action'] == 'confirm_canceled' && $_POST['confirm'] == 'yes')
|
||||
{
|
||||
$fac = new Facture($db);
|
||||
@ -345,7 +345,7 @@ if ($_POST['action'] == 'confirm_converttoreduc' && $_POST['confirm'] == 'yes' &
|
||||
$i++;
|
||||
}
|
||||
|
||||
// Insère une remise par famille de taux tva
|
||||
// Ins<EFBFBD>re une remise par famille de taux tva
|
||||
$discount = new DiscountAbsolute($db);
|
||||
$discount->desc='(CREDIT_NOTE)';
|
||||
$discount->tva_tx=abs($fac->total_ttc);
|
||||
@ -425,7 +425,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
$facture->remise_absolue = $_POST['remise_absolue'];
|
||||
$facture->remise_percent = $_POST['remise_percent'];
|
||||
|
||||
// Propriétés particulieres a facture de remplacement
|
||||
// Propri<EFBFBD>t<EFBFBD>s particulieres a facture de remplacement
|
||||
$facture->fk_facture_source = $_POST['fac_replacement'];
|
||||
$facture->type = 1;
|
||||
|
||||
@ -461,7 +461,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
$facture->remise_absolue = $_POST['remise_absolue'];
|
||||
$facture->remise_percent = $_POST['remise_percent'];
|
||||
|
||||
// Propriétés particulieres a facture avoir
|
||||
// Propri<EFBFBD>t<EFBFBD>s particulieres a facture avoir
|
||||
$facture->fk_facture_source = $_POST['fac_avoir'];
|
||||
$facture->type = 2;
|
||||
|
||||
@ -476,7 +476,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
|
||||
if ($_POST['type'] == 0 && $_POST['fac_rec'] > 0)
|
||||
{
|
||||
// Si facture récurrente
|
||||
// Si facture r<EFBFBD>currente
|
||||
$datefacture = dolibarr_mktime(12, 0 , 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
||||
|
||||
$facture->socid = $_POST['socid'];
|
||||
@ -488,7 +488,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
$facture->ref_client = $_POST['ref_client'];
|
||||
$facture->modelpdf = $_POST['model'];
|
||||
|
||||
// Propriétés particulieres a facture recurrente
|
||||
// Propri<EFBFBD>t<EFBFBD>s particulieres a facture recurrente
|
||||
$facture->fac_rec = $_POST['fac_rec'];
|
||||
$facture->type = 0;
|
||||
|
||||
@ -588,7 +588,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Si création depuis commande
|
||||
* Si cr<EFBFBD>ation depuis commande
|
||||
*/
|
||||
if ($_POST['commandeid'])
|
||||
{
|
||||
@ -640,7 +640,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
}
|
||||
|
||||
/*
|
||||
* Si création depuis contrat
|
||||
* Si cr<EFBFBD>ation depuis contrat
|
||||
*/
|
||||
if ($_POST['contratid'])
|
||||
{
|
||||
@ -700,7 +700,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
||||
|
||||
}
|
||||
|
||||
// Fin création facture, on l'affiche
|
||||
// Fin cr<EFBFBD>ation facture, on l'affiche
|
||||
if ($facid > 0 && ! $error)
|
||||
{
|
||||
$db->commit();
|
||||
@ -748,7 +748,7 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
|
||||
$date_end=$_POST['date_endyear'].'-'.$_POST['date_endmonth'].'-'.$_POST['date_endday'];
|
||||
}
|
||||
}
|
||||
// Si ajout champ produit prédéfini
|
||||
// Si ajout champ produit pr<EFBFBD>d<EFBFBD>fini
|
||||
if ($_POST['action'] == 'addligne_predef')
|
||||
{
|
||||
if ($_POST['date_start_predefyear'] && $_POST['date_start_predefmonth'] && $_POST['date_start_predefday'])
|
||||
@ -846,7 +846,7 @@ if (($_POST['action'] == 'addligne' || $_POST['action'] == 'addligne_predef') &&
|
||||
$mesg='<div class="error">'.$fac->error.'</div>';
|
||||
}
|
||||
|
||||
$_GET['facid']=$_POST['facid']; // Pour réaffichage de la fiche en cours d'édition
|
||||
$_GET['facid']=$_POST['facid']; // Pour r<EFBFBD>affichage de la fiche en cours d'<27>dition
|
||||
}
|
||||
|
||||
if ($_POST['action'] == 'updateligne' && $user->rights->facture->creer && $_POST['save'] == $langs->trans('Save'))
|
||||
@ -880,12 +880,12 @@ if ($_POST['action'] == 'updateligne' && $user->rights->facture->creer && $_POST
|
||||
}
|
||||
facture_pdf_create($db, $fac->id, '', $fac->modelpdf, $outputlangs);
|
||||
|
||||
$_GET['facid']=$_POST['facid']; // Pour réaffichage de la fiche en cours d'édition
|
||||
$_GET['facid']=$_POST['facid']; // Pour r<EFBFBD>affichage de la fiche en cours d'<27>dition
|
||||
}
|
||||
|
||||
if ($_POST['action'] == 'updateligne' && $user->rights->facture->creer && $_POST['cancel'] == $langs->trans('Cancel'))
|
||||
{
|
||||
Header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$_POST['facid']); // Pour réaffichage de la fiche en cours d'édition
|
||||
Header('Location: '.$_SERVER["PHP_SELF"].'?facid='.$_POST['facid']); // Pour r<EFBFBD>affichage de la fiche en cours d'<27>dition
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -941,13 +941,13 @@ if (($_POST['action'] == 'send' || $_POST['action'] == 'relance') && ! $_POST['c
|
||||
|
||||
if ($_POST['sendto'])
|
||||
{
|
||||
// Le destinataire a été fourni via le champ libre
|
||||
// Le destinataire a <EFBFBD>t<EFBFBD> fourni via le champ libre
|
||||
$sendto = $_POST['sendto'];
|
||||
$sendtoid = 0;
|
||||
}
|
||||
elseif ($_POST['receiver'])
|
||||
{
|
||||
// Le destinataire a été fourni via la liste déroulante
|
||||
// Le destinataire a <EFBFBD>t<EFBFBD> fourni via la liste d<>roulante
|
||||
if ($_POST['receiver'] < 0) // Id du tiers
|
||||
{
|
||||
$sendto = $fac->client->email;
|
||||
@ -980,11 +980,11 @@ if (($_POST['action'] == 'send' || $_POST['action'] == 'relance') && ! $_POST['c
|
||||
}
|
||||
|
||||
$actiontypecode='AC_FAC';
|
||||
$actionmsg ='Mail envoyé par '.$from.' à '.$sendto.'.<br>';
|
||||
$actionmsg ='Mail envoy<EFBFBD> par '.$from.' <20> '.$sendto.'.<br>';
|
||||
|
||||
if ($message)
|
||||
{
|
||||
$actionmsg.='Texte utilisé dans le corps du message:<br>';
|
||||
$actionmsg.='Texte utilis<EFBFBD> dans le corps du message:<br>';
|
||||
$actionmsg.=$message;
|
||||
}
|
||||
|
||||
@ -994,9 +994,9 @@ if (($_POST['action'] == 'send' || $_POST['action'] == 'relance') && ! $_POST['c
|
||||
{
|
||||
$subject = 'Relance facture '.$fac->ref;
|
||||
$actiontypecode='AC_FAC';
|
||||
$actionmsg='Mail envoyé par '.$from.' à '.$sendto.'.<br>';
|
||||
$actionmsg='Mail envoy<EFBFBD> par '.$from.' <20> '.$sendto.'.<br>';
|
||||
if ($message) {
|
||||
$actionmsg.='Texte utilisé dans le corps du message:<br>';
|
||||
$actionmsg.='Texte utilis<EFBFBD> dans le corps du message:<br>';
|
||||
$actionmsg.=$message;
|
||||
}
|
||||
$actionmsg2='Relance facture par mail';
|
||||
@ -1086,12 +1086,12 @@ if (($_POST['action'] == 'send' || $_POST['action'] == 'relance') && ! $_POST['c
|
||||
{
|
||||
$langs->load("other");
|
||||
$mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
|
||||
dolibarr_syslog('Impossible de lire les données de la facture. Le fichier facture n\'a peut-être pas été généré.');
|
||||
dolibarr_syslog('Impossible de lire les donn<EFBFBD>es de la facture. Le fichier facture n\'a peut-<2D>tre pas <20>t<EFBFBD> g<>n<EFBFBD>r<EFBFBD>.');
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Générer ou regénérer le document PDF
|
||||
* G<EFBFBD>n<EFBFBD>rer ou reg<EFBFBD>n<EFBFBD>rer le document PDF
|
||||
*/
|
||||
if ($_REQUEST['action'] == 'builddoc') // En get ou en post
|
||||
{
|
||||
@ -1209,9 +1209,9 @@ if ($_GET['action'] == 'create')
|
||||
/*
|
||||
\todo
|
||||
L'info "Reference commande client" est une carac de la commande et non de la facture.
|
||||
Elle devrait donc etre stockée sur l'objet commande liée à la facture et non sur la facture.
|
||||
Elle devrait donc etre stock<EFBFBD>e sur l'objet commande li<EFBFBD>e <EFBFBD> la facture et non sur la facture.
|
||||
Pour ceux qui veulent l'utiliser au niveau de la facture, positionner la
|
||||
constante FAC_USE_CUSTOMER_ORDER_REF à 1.
|
||||
constante FAC_USE_CUSTOMER_ORDER_REF <EFBFBD> 1.
|
||||
*/
|
||||
if ($conf->global->FAC_USE_CUSTOMER_ORDER_REF)
|
||||
{
|
||||
@ -1243,7 +1243,12 @@ if ($_GET['action'] == 'create')
|
||||
$optionsav="";
|
||||
foreach ($facids as $key => $value)
|
||||
{
|
||||
$optionsav.='<option value="'.$key.'">'.$value.'</option>';
|
||||
$newinvoice=new Facture($db);
|
||||
$newinvoice->fetch($key);
|
||||
$optionsav.='<option value="'.$key.'">';
|
||||
$optionsav.=$newinvoice->ref;
|
||||
$optionsav.=' ('.$newinvoice->getLibStatut(1,$value).')';
|
||||
$optionsav.='</option>';
|
||||
}
|
||||
|
||||
print '<tr><td valign="top">'.$langs->trans('Type').'</td><td colspan="2">';
|
||||
@ -1322,12 +1327,12 @@ if ($_GET['action'] == 'create')
|
||||
$html->select_date('','','','','',"add");
|
||||
print '</td></tr>';
|
||||
|
||||
// Conditions de réglement
|
||||
// Conditions de r<EFBFBD>glement
|
||||
print '<tr><td nowrap>'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">';
|
||||
$html->select_conditions_paiements($cond_reglement_id,'cond_reglement_id');
|
||||
print '</td></tr>';
|
||||
|
||||
// Mode de réglement
|
||||
// Mode de r<EFBFBD>glement
|
||||
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="2">';
|
||||
$html->select_types_paiements($mode_reglement_id,'mode_reglement_id');
|
||||
print '</td></tr>';
|
||||
@ -1369,7 +1374,7 @@ if ($_GET['action'] == 'create')
|
||||
}
|
||||
print '</textarea></td></tr>';
|
||||
|
||||
// Note privée
|
||||
// Note priv<EFBFBD>e
|
||||
if (! $user->societe_id)
|
||||
{
|
||||
print '<tr>';
|
||||
@ -1444,7 +1449,7 @@ if ($_GET['action'] == 'create')
|
||||
{
|
||||
print '<tr><td colspan="3">';
|
||||
|
||||
// Zone de choix des produits prédéfinis à la création
|
||||
// Zone de choix des produits pr<EFBFBD>d<EFBFBD>finis <20> la cr<63>ation
|
||||
print '<table class="noborder">';
|
||||
print '<tr><td>'.$langs->trans('ProductsAndServices').'</td>';
|
||||
print '<td>'.$langs->trans('Qty').'</td>';
|
||||
@ -1468,7 +1473,7 @@ if ($_GET['action'] == 'create')
|
||||
print '<td><input type="text" size="2" name="qty'.$i.'" value="1"></td>';
|
||||
print '<td nowrap="nowrap"><input type="text" size="1" name="remise_percent'.$i.'" value="'.$soc->remise_client.'">%</td>';
|
||||
print '<td> </td>';
|
||||
// Si le module service est actif, on propose des dates de début et fin à la ligne
|
||||
// Si le module service est actif, on propose des dates de d<EFBFBD>but et fin <20> la ligne
|
||||
if ($conf->service->enabled)
|
||||
{
|
||||
print '<td nowrap="nowrap">';
|
||||
@ -1494,7 +1499,7 @@ if ($_GET['action'] == 'create')
|
||||
}
|
||||
|
||||
/*
|
||||
* Factures récurrentes
|
||||
* Factures r<EFBFBD>currentes
|
||||
*/
|
||||
if (! $conf->global->FACTURE_DISABLE_RECUR)
|
||||
{
|
||||
@ -1725,7 +1730,7 @@ else
|
||||
*/
|
||||
if ($_GET['action'] == 'valid')
|
||||
{
|
||||
// on vérifie si la facture est en numérotation provisoire
|
||||
// on v<EFBFBD>rifie si la facture est en num<75>rotation provisoire
|
||||
$facref = substr($fac->ref, 1, 4);
|
||||
if ($facref == 'PROV')
|
||||
{
|
||||
@ -1750,7 +1755,7 @@ else
|
||||
}
|
||||
|
||||
/*
|
||||
* Confirmation du classement payé
|
||||
* Confirmation du classement pay<EFBFBD>
|
||||
*/
|
||||
if ($_GET['action'] == 'payed' && $resteapayer <= 0)
|
||||
{
|
||||
@ -1783,7 +1788,7 @@ else
|
||||
$arrayreasons[$close[$key]['code']]=$close[$key]['reason'];
|
||||
}
|
||||
|
||||
// Crée un tableau formulaire
|
||||
// Cr<EFBFBD>e un tableau formulaire
|
||||
$formquestion=array(
|
||||
'text' => $langs->trans("ConfirmClassifyPayedPartiallyQuestion"),
|
||||
array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"), 'values' => $arrayreasons),
|
||||
@ -1799,7 +1804,7 @@ else
|
||||
*/
|
||||
if ($_GET['action'] == 'canceled')
|
||||
{
|
||||
// S'il y a une facture de remplacement pas encore validée (etat brouillon),
|
||||
// S'il y a une facture de remplacement pas encore valid<EFBFBD>e (etat brouillon),
|
||||
// on ne permet pas de classer abandonner la facture.
|
||||
if ($facidnext)
|
||||
{
|
||||
@ -1826,7 +1831,7 @@ else
|
||||
$arrayreasons[$close[1]['code']]=$close[1]['reason'];
|
||||
$arrayreasons[$close[2]['code']]=$close[2]['reason'];
|
||||
|
||||
// Crée un tableau formulaire
|
||||
// Cr<EFBFBD>e un tableau formulaire
|
||||
$formquestion=array(
|
||||
'text' => $langs->trans("ConfirmCancelBillQuestion"),
|
||||
array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"), 'values' => $arrayreasons),
|
||||
@ -1871,8 +1876,8 @@ else
|
||||
/*
|
||||
\todo
|
||||
L'info "Reference commande client" est une carac de la commande et non de la facture.
|
||||
Elle devrait donc etre stockée sur l'objet commande lié à la facture et non sur la facture.
|
||||
Pour ceux qui utilisent ainsi, positionner la constante FAC_USE_CUSTOMER_ORDER_REF à 1.
|
||||
Elle devrait donc etre stock<EFBFBD>e sur l'objet commande li<EFBFBD> <EFBFBD> la facture et non sur la facture.
|
||||
Pour ceux qui utilisent ainsi, positionner la constante FAC_USE_CUSTOMER_ORDER_REF <EFBFBD> 1.
|
||||
*/
|
||||
if ($conf->global->FAC_USE_CUSTOMER_ORDER_REF)
|
||||
{
|
||||
@ -1899,7 +1904,7 @@ else
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
// Tiers Société
|
||||
// Tiers Soci<EFBFBD>t<EFBFBD>
|
||||
print '<tr><td>'.$langs->trans('Company').'</td>';
|
||||
print '<td colspan="5">'.$soc->getNomUrl(1,'compta').'</td>';
|
||||
print '</tr>';
|
||||
@ -2014,11 +2019,11 @@ else
|
||||
|
||||
// Already payed
|
||||
print '<tr><td colspan="2" align="right">'.$langs->trans('AlreadyPayed').' :</td><td align="right"><b>'.price($totalpaye).'</b></td><td>'.$langs->trans('Currency'.$conf->monnaie).'</td></tr>';
|
||||
// Facturé
|
||||
// Factur<EFBFBD>
|
||||
print '<tr><td colspan="2" align="right">'.$langs->trans("Billed").' :</td><td align="right" style="border: 1px solid;">'.price($fac->total_ttc).'</td><td>'.$langs->trans('Currency'.$conf->monnaie).'</td></tr>';
|
||||
$resteapayeraffiche=$resteapayer;
|
||||
|
||||
// Payé partiellement 'escompte'
|
||||
// Pay<EFBFBD> partiellement 'escompte'
|
||||
if (($fac->statut == 2 || $fac->statut == 3) && $fac->close_code == 'escompte')
|
||||
{
|
||||
print '<tr><td colspan="2" align="right" nowrap="1">';
|
||||
@ -2026,7 +2031,7 @@ else
|
||||
print '</td><td align="right">'.price($fac->total_ttc - $totalpaye).'</td><td>'.$langs->trans('Currency'.$conf->monnaie).'</td></tr>';
|
||||
$resteapayeraffiche=0;
|
||||
}
|
||||
// Payé partiellement ou Abandon 'badcustomer'
|
||||
// Pay<EFBFBD> partiellement ou Abandon 'badcustomer'
|
||||
if (($fac->statut == 2 || $fac->statut == 3) && $fac->close_code == 'badcustomer')
|
||||
{
|
||||
print '<tr><td colspan="2" align="right" nowrap="1">';
|
||||
@ -2034,7 +2039,7 @@ else
|
||||
print '</td><td align="right">'.price($fac->total_ttc - $totalpaye).'</td><td>'.$langs->trans('Currency'.$conf->monnaie).'</td></tr>';
|
||||
//$resteapayeraffiche=0;
|
||||
}
|
||||
// Payé partiellement ou Abandon 'product_returned'
|
||||
// Pay<EFBFBD> partiellement ou Abandon 'product_returned'
|
||||
if (($fac->statut == 2 || $fac->statut == 3) && $fac->close_code == 'product_returned')
|
||||
{
|
||||
print '<tr><td colspan="2" align="right" nowrap="1">';
|
||||
@ -2042,7 +2047,7 @@ else
|
||||
print '</td><td align="right">'.price($fac->total_ttc - $totalpaye).'</td><td>'.$langs->trans('Currency'.$conf->monnaie).'</td></tr>';
|
||||
$resteapayeraffiche=0;
|
||||
}
|
||||
// Payé partiellement ou Abandon 'abandon'
|
||||
// Pay<EFBFBD> partiellement ou Abandon 'abandon'
|
||||
if (($fac->statut == 2 || $fac->statut == 3) && $fac->close_code == 'abandon')
|
||||
{
|
||||
print '<tr><td colspan="2" align="right" nowrap="1">';
|
||||
@ -2086,7 +2091,7 @@ else
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Conditions de réglement
|
||||
// Conditions de r<EFBFBD>glement
|
||||
print '<tr><td>';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
print $langs->trans('PaymentConditionsShort');
|
||||
@ -2129,7 +2134,7 @@ else
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Lit lignes de facture pour déterminer montant
|
||||
// Lit lignes de facture pour d<EFBFBD>terminer montant
|
||||
// On s'en sert pas mais ca sert pour debuggage
|
||||
$sql = 'SELECT l.price as price, l.qty, l.rowid, l.tva_taux,';
|
||||
$sql .= ' l.remise_percent, l.subprice';
|
||||
@ -2328,7 +2333,7 @@ else
|
||||
print '<td align="center">';
|
||||
if (($objp->info_bits & 2) == 2)
|
||||
{
|
||||
// Ligne remise prédéfinie, on permet pas modif
|
||||
// Ligne remise pr<EFBFBD>d<EFBFBD>finie, on permet pas modif
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2392,7 +2397,7 @@ else
|
||||
print ' - '.nl2br($objp->product);
|
||||
print '<br>';
|
||||
}
|
||||
// éditeur wysiwyg
|
||||
// <EFBFBD>diteur wysiwyg
|
||||
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
|
||||
@ -2468,7 +2473,7 @@ else
|
||||
print '<td colspan="4"> </td>';
|
||||
print "</tr>\n";
|
||||
|
||||
// Ajout produit produits/services personalisés
|
||||
// Ajout produit produits/services personalis<EFBFBD>s
|
||||
print '<form name="addligne" action="'.$_SERVER['PHP_SELF'].'#add" method="post">';
|
||||
print '<input type="hidden" name="facid" value="'.$fac->id.'">';
|
||||
print '<input type="hidden" name="action" value="addligne">';
|
||||
@ -2476,7 +2481,7 @@ else
|
||||
$var=true;
|
||||
print '<tr '.$bc[$var].'>';
|
||||
print '<td>';
|
||||
// éditeur wysiwyg
|
||||
// <EFBFBD>diteur wysiwyg
|
||||
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
|
||||
@ -2511,7 +2516,7 @@ else
|
||||
}
|
||||
print '</form>';
|
||||
|
||||
// Ajout de produits/services prédéfinis
|
||||
// Ajout de produits/services pr<EFBFBD>d<EFBFBD>finis
|
||||
if ($conf->produit->enabled)
|
||||
{
|
||||
print '<tr class="liste_titre">';
|
||||
@ -2551,7 +2556,7 @@ else
|
||||
|
||||
if (! $conf->global->PRODUIT_CHANGE_PROD_DESC)
|
||||
{
|
||||
// éditeur wysiwyg
|
||||
// <EFBFBD>diteur wysiwyg
|
||||
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
|
||||
@ -2595,10 +2600,10 @@ else
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
// Editer une facture déjà validée, sans paiement effectué et pas exporté en compta
|
||||
// Editer une facture d<EFBFBD>j<EFBFBD> valid<69>e, sans paiement effectu<74> et pas export<72> en compta
|
||||
if ($fac->statut == 1)
|
||||
{
|
||||
// On vérifie si les lignes de factures ont été exportées en compta et/ou ventilées
|
||||
// On v<EFBFBD>rifie si les lignes de factures ont <20>t<EFBFBD> export<72>es en compta et/ou ventil<69>es
|
||||
$ventilExportCompta = $fac->getVentilExportCompta();
|
||||
|
||||
if ($conf->global->FACTURE_ENABLE_EDITDELETE && $user->rights->facture->modifier
|
||||
@ -2608,7 +2613,7 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
// Récurrente
|
||||
// R<EFBFBD>currente
|
||||
if (! $conf->global->FACTURE_DISABLE_RECUR && $fac->type == 0)
|
||||
{
|
||||
if (! $facidnext)
|
||||
@ -2627,7 +2632,7 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
// Générer
|
||||
// G<EFBFBD>n<EFBFBD>rer
|
||||
if ($fac->statut >= 1 && $user->rights->facture->creer)
|
||||
{
|
||||
if ($fac->paye == 0)
|
||||
@ -2694,14 +2699,14 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
// Classer 'payé'
|
||||
// Classer 'pay<EFBFBD>'
|
||||
if ($fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->paiement &&
|
||||
(($fac->type != 2 && $resteapayer <= 0) || ($fac->type == 2 && $resteapayer >= 0)) )
|
||||
{
|
||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?facid='.$fac->id.'&action=payed">'.$langs->trans('ClassifyPayed').'</a>';
|
||||
}
|
||||
|
||||
// Classer 'fermée' (possible si validée et pas encore classée payée)
|
||||
// Classer 'ferm<EFBFBD>e' (possible si valid<69>e et pas encore class<73>e pay<61>e)
|
||||
if ($fac->statut == 1 && $fac->paye == 0 && $resteapayer > 0
|
||||
&& $user->rights->facture->paiement)
|
||||
{
|
||||
@ -2742,7 +2747,7 @@ else
|
||||
print '<a name="builddoc"></a>'; // ancre
|
||||
|
||||
/*
|
||||
* Documents générés
|
||||
* Documents g<EFBFBD>n<EFBFBD>r<EFBFBD>s
|
||||
*/
|
||||
$filename=sanitize_string($fac->ref);
|
||||
$filedir=$conf->facture->dir_output . '/' . sanitize_string($fac->ref);
|
||||
@ -2756,7 +2761,7 @@ else
|
||||
$somethingshown=$html->show_documents('facture',$filename,$filedir,$urlsource,$genallowed,$delallowed,$fac->modelpdf);
|
||||
|
||||
/*
|
||||
* Propales rattachées
|
||||
* Propales rattach<EFBFBD>es
|
||||
*/
|
||||
$sql = 'SELECT '.$db->pdate('p.datep').' as dp, p.total_ht, p.ref, p.ref_client, p.rowid as propalid';
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'propal as p';
|
||||
@ -2810,7 +2815,7 @@ else
|
||||
}
|
||||
|
||||
/*
|
||||
* Commandes rattachées
|
||||
* Commandes rattach<EFBFBD>es
|
||||
*/
|
||||
if($conf->commande->enabled)
|
||||
{
|
||||
@ -2866,7 +2871,7 @@ else
|
||||
print '</td><td valign="top" width="50%">';
|
||||
|
||||
/*
|
||||
* Liste des actions propres à la facture
|
||||
* Liste des actions propres <EFBFBD> la facture
|
||||
*/
|
||||
$sql = 'SELECT a.id, '.$db->pdate('a.datea').' as da, a.label, a.note,';
|
||||
$sql.= ' u.login';
|
||||
@ -2947,7 +2952,7 @@ else
|
||||
$liste[$key]=$value;
|
||||
}
|
||||
|
||||
// Créé l'objet formulaire mail
|
||||
// Cr<EFBFBD><EFBFBD> l'objet formulaire mail
|
||||
include_once(DOL_DOCUMENT_ROOT.'/html.formmail.class.php');
|
||||
$formmail = new FormMail($db);
|
||||
$formmail->fromname = $user->fullname;
|
||||
@ -2962,7 +2967,7 @@ else
|
||||
$formmail->withcancel=1;
|
||||
// Tableau des substitutions
|
||||
$formmail->substit['__FACREF__']=$fac->ref;
|
||||
// Tableau des paramètres complémentaires du post
|
||||
// Tableau des param<EFBFBD>tres compl<70>mentaires du post
|
||||
$formmail->param['action']='send';
|
||||
$formmail->param['models']='facture_send';
|
||||
$formmail->param['facid']=$fac->id;
|
||||
@ -3003,7 +3008,7 @@ else
|
||||
$liste[$key]=$value;
|
||||
}
|
||||
|
||||
// Créé l'objet formulaire mail
|
||||
// Cr<EFBFBD><EFBFBD> l'objet formulaire mail
|
||||
include_once(DOL_DOCUMENT_ROOT.'/html.formmail.class.php');
|
||||
$formmail = new FormMail($db);
|
||||
$formmail->fromname = $user->fullname;
|
||||
@ -3017,7 +3022,7 @@ else
|
||||
$formmail->withdeliveryreceipt=1;
|
||||
// Tableau des substitutions
|
||||
$formmail->substit['__FACREF__']=$fac->ref;
|
||||
// Tableau des paramètres complémentaires
|
||||
// Tableau des param<EFBFBD>tres compl<70>mentaires
|
||||
$formmail->param['action']='relance';
|
||||
$formmail->param['models']='facture_relance';
|
||||
$formmail->param['facid']=$fac->id;
|
||||
|
||||
@ -2345,25 +2345,26 @@ class Facture extends CommonObject
|
||||
|
||||
/**
|
||||
* \brief Renvoi liste des factures qualifiables pour correction par avoir
|
||||
* Statut >= validée + classée payée completement ou classée payée partiellement + pas deja remplacée + pas deja avoir
|
||||
* Les factures qui respectent les regles suivantes sont retournees:
|
||||
* (validée + paiement en cours) ou classée (payée completement ou payée partiellement) + pas deja remplacée + pas deja avoir
|
||||
* \param socid Id societe
|
||||
* \return array Tableau des factures ($id => $ref)
|
||||
*/
|
||||
function list_qualified_avoir_invoices($socid=0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$return = array();
|
||||
|
||||
$sql = "SELECT f.rowid as rowid, f.facnumber";
|
||||
$sql = "SELECT f.rowid as rowid, f.facnumber, f.fk_statut, pf.fk_paiement";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON (f.rowid = ff.fk_facture_source AND ff.type=1)";
|
||||
$sql.= " WHERE f.fk_statut >= 1";
|
||||
$sql.= " AND (f.paye = 1"; // Classée payée complètement
|
||||
$sql.= " OR f.close_code IS NOT NULL)"; // Classée payée partiellement
|
||||
$sql.= " WHERE ";
|
||||
$sql.= " f.fk_statut in (1,2)";
|
||||
// $sql.= " WHERE f.fk_statut >= 1";
|
||||
// $sql.= " AND (f.paye = 1"; // Classée payée complètement
|
||||
// $sql.= " OR f.close_code IS NOT NULL)"; // Classée payée partiellement
|
||||
$sql.= " AND ff.type IS NULL"; // Renvoi vrai si pas facture de remplacement
|
||||
$sql.= " AND f.type != 2"; // Facture non avoir
|
||||
$sql.= " AND f.type != 2"; // Type non 2 si facture non avoir
|
||||
if ($socid > 0) $sql.=" AND f.fk_soc = ".$socid;
|
||||
$sql.= " ORDER BY f.facnumber";
|
||||
|
||||
@ -2373,7 +2374,19 @@ class Facture extends CommonObject
|
||||
{
|
||||
while ($obj=$this->db->fetch_object($resql))
|
||||
{
|
||||
$return[$obj->rowid]=$obj->facnumber;
|
||||
$qualified=0;
|
||||
// if statut is 1, record is qualified only if some paiement
|
||||
// has already been made.
|
||||
// If not, we must not do credit note but a replacement invoice.
|
||||
if ($obj->fk_statut == 1 && $obj->fk_paiement) $qualified=1;
|
||||
if ($obj->fk_statut == 2) $qualified=1;
|
||||
if ($qualified)
|
||||
{
|
||||
|
||||
//$ref=$obj->facnumber;
|
||||
$ref=($obj->fk_paiement?1:0);
|
||||
$return[$obj->rowid]=$ref;
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user