| '.$langs->trans('Type').' | ';
print ''."\n";
- print '| ';
+ // Standard invoice
+ print ' | | ';
print '';
print ' | ';
$desc=$html->textwithhelp($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
print $desc;
print ' | '."\n";
- print '| ';
+ // Deposit
+ print ' | | ';
+ print '';
+ print ' | ';
+ $desc=$html->textwithhelp($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
+ print $desc;
+ print ' | '."\n";
+
+ // Proformat
+ if ($conf->global->FACTURE_USE_PROFORMAT)
+ {
+ print '| ';
+ print '';
+ print ' | ';
+ $desc=$html->textwithhelp($langs->trans("InvoiceProformat"),$langs->transnoentities("InvoiceProformatDesc"),1);
+ print $desc;
+ print ' | '."\n";
+ }
+
+ // Replacement
+ print '| ';
print '';
@@ -1506,7 +1520,8 @@ if ($_GET['action'] == 'create')
print $desc;
print ' | '."\n";
- print '| ';
+ // Credit note
+ print ' | | ';
print '';
@@ -1549,14 +1564,14 @@ if ($_GET['action'] == 'create')
$html->select_date($dateinvoice,'','','','',"add");
print ' | ';
- // Conditions de règlement
+ // Payment term
print '| '.$langs->trans('PaymentConditionsShort').' | ';
- $html->select_conditions_paiements($cond_reglement_id,'cond_reglement_id');
+ $html->select_conditions_paiements(isset($_POST['cond_reglement_id'])?$_POST['cond_reglement_id']:$cond_reglement_id,'cond_reglement_id');
print ' | ';
- // Mode de règlement
+ // Payment mode
print '| '.$langs->trans('PaymentMode').' | ';
- $html->select_types_paiements($mode_reglement_id,'mode_reglement_id');
+ $html->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id');
print ' | ';
// Project
@@ -2938,7 +2953,9 @@ else
}
// Validate
- if ($fac->statut == 0 && $num_lignes > 0 && (($fac->type < 2 && $fac->total_ttc >= 0) || ($fac->type == 2 && $fac->total_ttc <= 0)))
+ if ($fac->statut == 0 && $num_lignes > 0 &&
+ (($fac->type == 0 || $fac->type == 1 || $fac->type == 3 || $fac->type == 4) && $fac->total_ttc >= 0)
+ || ($fac->type == 2 && $fac->total_ttc <= 0))
{
if ($user->rights->facture->valider)
{
@@ -2972,7 +2989,7 @@ else
}
}
- if ($conf->global->FACTURE_SHOW_SEND_REMINDER)
+ if ($conf->global->FACTURE_SHOW_SEND_REMINDER) // For backward compatibility
{
// Envoyer une relance
if (($fac->statut == 1 || $fac->statut == 2) && $resteapayer > 0 && $user->rights->facture->envoyer)
@@ -2988,7 +3005,7 @@ else
}
}
- // Emettre paiement
+ // Create payment
if ($fac->type != 2 && $fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->paiement)
{
if ($facidnext)
@@ -3008,28 +3025,34 @@ else
}
}
- // Emettre remboursement ou Convertir en reduc
- if ($fac->type == 2)
+ // Reverse back money or convert to reduction
+ if ($fac->type == 2 || $fac->type == 3)
{
- if ($fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->paiement)
+ // For credit note only
+ if ($fac->type == 2 && $fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->paiement)
{
print ''.$langs->trans('DoPaymentBack').'';
}
-
- if ($fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->creer && $fac->getSommePaiement() == 0)
+ // For credit note
+ if ($fac->type == 2 && $fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->creer && $fac->getSommePaiement() == 0)
+ {
+ print 'id.'&action=converttoreduc">'.$langs->trans('ConvertToReduc').'';
+ }
+ // For deposit invoice
+ if ($fac->type == 3 && $fac->statut == 1 && $resteapayer == 0 && $user->rights->facture->creer)
{
print 'id.'&action=converttoreduc">'.$langs->trans('ConvertToReduc').'';
}
}
- // Classer 'payé'
+ // Classify payed (if not deposit and not credit note. Such invoice are "converted")
if ($fac->statut == 1 && $fac->paye == 0 && $user->rights->facture->paiement &&
- (($fac->type != 2 && $resteapayer <= 0) || ($fac->type == 2 && $resteapayer >= 0)) )
+ (($fac->type != 2 && $fac->type != 3 && $resteapayer <= 0) || ($fac->type == 2 && $resteapayer >= 0)) )
{
print ''.$langs->trans('ClassifyPayed').'';
}
- // Classer 'fermée' (possible si validée et pas encore classée payée)
+ // Classift 'closed not completely payed' (possible si validée et pas encore classée payée)
if ($fac->statut == 1 && $fac->paye == 0 && $resteapayer > 0
&& $user->rights->facture->paiement)
{
@@ -3052,13 +3075,13 @@ else
}
// Clone
- if ($fac->type == 0 && $user->rights->facture->creer)
+ if (($fac->type == 0 || $fac->type == 3 || $fac->type == 4) && $user->rights->facture->creer)
{
print ''.$langs->trans("ToClone").'';
}
// Clone as predefined
- if ($conf->global->FACTURE_ENABLE_RECUR && $fac->type == 0 && $fac->statut == 0 && $user->rights->facture->creer)
+ if ($conf->global->FACTURE_ENABLE_RECUR && ($fac->type == 0 || $fac->type == 3 || $fac->type == 4) && $fac->statut == 0 && $user->rights->facture->creer)
{
if (! $facidnext)
{
diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php
index edba3008c3e..4270034a40f 100644
--- a/htdocs/compta/paiement.php
+++ b/htdocs/compta/paiement.php
@@ -76,7 +76,7 @@ if ($_POST['action'] == 'add_paiement' || $_POST['action'] == 'confirm_paiement'
$formquestion['text'] = img_warning($langs->trans("PaymentHigherThanReminderToPay")).' Attention, le montant de paiement pour une ou plusieurs facture est superieur au reste a payer.';
$formquestion['text'].=' Corriger votre saisie, sinon, confirmer et penser a creer un avoir du trop percu lors de la fermeture de chacune des factures surpayees.';
}
-
+
$formquestion[$i++]=array('type' => 'hidden','name' => $key, 'value' => $_POST[$key]);
}
}
@@ -134,11 +134,11 @@ if ($_POST['action'] == 'confirm_paiement' && $_POST['confirm'] == 'yes')
$_POST['remonth'],
$_POST['reday'],
$_POST['reyear']);
-
+
if (! $error)
{
$db->begin();
-
+
// Creation de la ligne paiement
$paiement = new Paiement($db);
$paiement->datepaye = $datepaye;
@@ -166,7 +166,7 @@ if ($_POST['action'] == 'confirm_paiement' && $_POST['confirm'] == 'yes')
$user,
$_POST['chqemetteur'],
$_POST['chqbank']);
-
+
// 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)
@@ -201,7 +201,7 @@ if ($_POST['action'] == 'confirm_paiement' && $_POST['confirm'] == 'yes')
{
$error++;
}
-
+
if ($error == 0)
{
$loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id;
@@ -260,7 +260,7 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
if ($_POST["action"] == 'add_paiement')
{
$i=0;
-
+
$formquestion[$i++]=array('type' => 'hidden','name' => 'facid', 'value' => $facture->id);
$formquestion[$i++]=array('type' => 'hidden','name' => 'socid', 'value' => $facture->socid);
$formquestion[$i++]=array('type' => 'hidden','name' => 'type', 'value' => $facture->type);
@@ -324,7 +324,7 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
print ' | ';
/*
- * Liste factures impayees
+ * List of unpayed invoices
*/
$sql = 'SELECT f.rowid as facid, f.facnumber, f.total_ttc, f.type, ';
$sql.= $db->pdate('f.datef').' as df, ';
@@ -333,14 +333,14 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
$sql.= ' WHERE f.fk_soc = '.$facture->socid;
$sql.= ' AND f.paye = 0';
- $sql.= ' AND f.fk_statut = 1'; // Statut=0 => non valid�e, Statut=2 => annul�e
+ $sql.= ' AND f.fk_statut = 1'; // Statut=0 => not validated, Statut=2 => canceled
if ($facture->type != 2)
{
- $sql .= ' AND type in (0,1)'; // Facture standard ou de remplacement
+ $sql .= ' AND type in (0,1,3)'; // Standard invoice, replacement, deposit
}
else
{
- $sql .= ' AND type = 2';
+ $sql .= ' AND type = 2'; // If paying back a credit note, we show all credit notes
}
$sql .= ' GROUP BY f.facnumber';
$resql = $db->query($sql);
@@ -375,9 +375,9 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
$facturestatic->ref=$objp->facnumber;
$facturestatic->id=$objp->facid;
$facturestatic->type=$objp->type;
-
+
$creditnote=$facturestatic->getSommeCreditNote();
-
+
print '';
print '| ';
@@ -389,12 +389,12 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
// Prix
print ' | '.price($objp->total_ttc).' | ';
-
+
// Recu
print ''.price($objp->am);
if ($creditnote) print '+'.price($creditnote);
print ' | ';
-
+
// Reste a payer
print ''.price(price2num($objp->total_ttc - $objp->am - $creditnote,'MT')).' | ';
@@ -411,8 +411,8 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
print ' '.img_warning($langs->trans("PaymentHigherThanReminderToPay"));
}
print '';
-
-
+
+
print " \n";
$total+=$objp->total;
@@ -425,7 +425,7 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
{
// Print total
print '';
- print '| '.$langs->trans('TotalTTC').': | ';
+ print ''.$langs->trans('TotalTTC').' | ';
print ''.price($total_ttc).' | ';
print ''.price($totalrecu);
if ($totalrecucreditnote) print '+'.price($totalrecucreditnote);
@@ -476,7 +476,7 @@ if ($_GET['action'] == 'create' || $_POST['action'] == 'confirm_paiement' || $_P
/**
- * \brief Affichage de la liste des paiement
+ * \brief Affichage de la liste des paiements
*/
if (! $_GET['action'] && ! $_POST['action'])
{
@@ -491,7 +491,6 @@ if (! $_GET['action'] && ! $_POST['action'])
$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 ($socid)
{
$sql .= ' AND f.fk_soc = '.$socid;
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index a1e8a913561..4fb4350b383 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -52,7 +52,7 @@ class Facture extends CommonObject
var $id;
//! Id client
var $socid;
- //! Objet societe client (à charger par fetch_client)
+ //! Objet societe client (to load with fetch_client method)
var $client;
var $number;
var $author;
@@ -62,7 +62,7 @@ class Facture extends CommonObject
var $date_validation;
var $ref;
var $ref_client;
- //! 0=Facture normale, 1=Facture remplacement, 2=Facture avoir, 3=Facture récurrente
+ //! 0=Standard invoice, 1=Replacement invoice, 2=Credit note invoice, 3=Deposit invoice, 4=Proformat invoice
var $type;
var $amount;
var $remise;
@@ -77,7 +77,7 @@ class Facture extends CommonObject
var $statut;
//! 1 si facture payée COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant)
var $paye;
- //! id facture source si facture de remplacement ou avoir
+ //! id of source invoice if replacement invoice or credit note
var $fk_facture_source;
//! Fermeture apres paiement partiel: discount_vat, badcustomer, abandon
//! Fermeture alors que aucun paiement: replaced (si remplacé), abandon
@@ -134,7 +134,7 @@ class Facture extends CommonObject
{
global $langs,$conf,$mysoc;
- // Nettoyage paramètres
+ // Clean parameters
if (! $this->type) $this->type = 0;
$this->ref_client=trim($this->ref_client);
$this->note=trim($this->note);
@@ -182,7 +182,7 @@ class Facture extends CommonObject
// Definition de la date limite
$datelim=$this->calculate_date_lim_reglement();
- // Insertion dans la base
+ // Insert into database
$socid = $this->socid;
$amount = $this->amount;
$remise = $this->remise;
@@ -198,7 +198,7 @@ class Facture extends CommonObject
$sql.= ' fk_facture_source, fk_user_author, fk_projet,';
$sql.= ' fk_cond_reglement, fk_mode_reglement, date_lim_reglement, model_pdf)';
$sql.= ' VALUES (';
- $sql.= "'(PROV)', '".$this->type."', '".$socid."', ".$this->db->idate(mktime()).", '".$totalht."'";
+ $sql.= "'(PROV)', '".$this->type."', '".$socid."', ".$this->db->idate(gmmktime()).", '".$totalht."'";
$sql.= ",".($this->remise_absolue>0?$this->remise_absolue:'NULL');
$sql.= ",".($this->remise_percent>0?$this->remise_percent:'NULL');
$sql.= ",".$this->db->idate($this->date);
@@ -470,12 +470,14 @@ class Facture extends CommonObject
}
$picto='bill';
- if ($this->type == 1) $picto.='r';
- if ($this->type == 2) $picto.='a';
+ if ($this->type == 1) $picto.='r'; // Replacement invoice
+ if ($this->type == 2) $picto.='a'; // Credit note
+ if ($this->type == 3) $picto.='d'; // Deposit invoice
$label=$langs->trans("ShowInvoice").': '.$this->ref;
if ($this->type == 1) $label=$langs->trans("ShowInvoiceReplace").': '.$this->ref;
if ($this->type == 2) $label=$langs->trans("ShowInvoiceAvoir").': '.$this->ref;
+ if ($this->type == 3) $label=$langs->trans("ShowInvoiceDeposit").': '.$this->ref;
if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin);
if ($withpicto && $withpicto != 2) $result.=' ';
@@ -1965,6 +1967,7 @@ class Facture extends CommonObject
if ($this->type == 0) return $langs->trans("InvoiceStandard");
if ($this->type == 1) return $langs->trans("InvoiceReplacement");
if ($this->type == 2) return $langs->trans("InvoiceAvoir");
+ if ($this->type == 3) return $langs->trans("InvoiceDeposit");
return $langs->trans("Unknown");
}
@@ -2008,6 +2011,7 @@ class Facture extends CommonObject
else
{
if ($type == 2) return $langs->trans('Bill'.$prefix.'StatusPayedBackOrConverted');
+ elseif ($type == 3) return $langs->trans('Bill'.$prefix.'StatusConverted');
else return $langs->trans('Bill'.$prefix.'StatusPayed');
}
}
@@ -2025,6 +2029,7 @@ class Facture extends CommonObject
else
{
if ($type == 2) return $langs->trans('Bill'.$prefix.'StatusPayedBackOrConverted');
+ elseif ($type == 3) return $langs->trans('Bill'.$prefix.'StatusConverted');
else return $langs->trans('Bill'.$prefix.'StatusPayed');
}
}
@@ -2042,6 +2047,7 @@ class Facture extends CommonObject
else
{
if ($type == 2) return img_picto($langs->trans('BillStatusPayedBackOrConverted'),'statut6').' '.$langs->trans('Bill'.$prefix.'StatusPayedBackOrConverted');
+ elseif ($type == 3) return img_picto($langs->trans('BillStatusConverted'),'statut6').' '.$langs->trans('Bill'.$prefix.'StatusConverted');
else return img_picto($langs->trans('BillStatusPayed'),'statut6').' '.$langs->trans('Bill'.$prefix.'StatusPayed');
}
}
@@ -2059,6 +2065,7 @@ class Facture extends CommonObject
else
{
if ($type == 2) return img_picto($langs->trans('BillStatusPayedBackOrConverted'),'statut6');
+ elseif ($type == 3) return img_picto($langs->trans('BillStatusConverted'),'statut6');
else return img_picto($langs->trans('BillStatusPayed'),'statut6');
}
}
@@ -2075,6 +2082,7 @@ class Facture extends CommonObject
else
{
if ($type == 2) return img_picto($langs->trans('BillStatusPayedBackOrConverted'),'statut6').' '.$langs->trans('BillStatusPayedBackOrConverted');
+ elseif ($type == 3) return img_picto($langs->trans('BillStatusConverted'),'statut6').' '.$langs->trans('BillStatusConverted');
else return img_picto($langs->trans('BillStatusPayed'),'statut6').' '.$langs->trans('BillStatusPayed');
}
}
@@ -2092,6 +2100,7 @@ class Facture extends CommonObject
else
{
if ($type == 2) return $langs->trans('Bill'.$prefix.'StatusPayedBackOrConverted').' '.img_picto($langs->trans('BillStatusPayedBackOrConverted'),'statut6');
+ elseif ($type == 3) return $langs->trans('Bill'.$prefix.'StatusConverted').' '.img_picto($langs->trans('BillStatusConverted'),'statut6');
else return $langs->trans('Bill'.$prefix.'StatusPayed').' '.img_picto($langs->trans('BillStatusPayed'),'statut6');
}
}
@@ -2628,7 +2637,7 @@ class Facture extends CommonObject
}
}
- // Initialise paramètres
+ // Initialize parameters
$this->id=0;
$this->ref = 'SPECIMEN';
$this->specimen=1;
diff --git a/htdocs/includes/modules/facture/pdf_crabe.modules.php b/htdocs/includes/modules/facture/pdf_crabe.modules.php
index c789d07fb3f..e4596913559 100644
--- a/htdocs/includes/modules/facture/pdf_crabe.modules.php
+++ b/htdocs/includes/modules/facture/pdf_crabe.modules.php
@@ -938,6 +938,8 @@ class pdf_crabe extends ModelePDFFactures
$title=$outputlangs->transnoentities("Invoice");
if ($object->type == 1) $title=$outputlangs->transnoentities("InvoiceReplacement");
if ($object->type == 2) $title=$outputlangs->transnoentities("InvoiceAvoir");
+ if ($object->type == 3) $title=$outputlangs->transnoentities("InvoiceDeposit");
+ if ($object->type == 4) $title=$outputlangs->transnoentities("InvoiceProFormat");
$pdf->MultiCell(100, 4, $title, '' , 'R');
$pdf->SetFont('Arial','B',12);
diff --git a/htdocs/includes/modules/facture/pdf_oursin.modules.php b/htdocs/includes/modules/facture/pdf_oursin.modules.php
index bc5512374fd..5158da8202c 100644
--- a/htdocs/includes/modules/facture/pdf_oursin.modules.php
+++ b/htdocs/includes/modules/facture/pdf_oursin.modules.php
@@ -131,7 +131,7 @@ class pdf_oursin extends ModelePDFFactures
$ret=$fac->fetch($id);
}
$fac->fetch_client();
-
+
$deja_regle = $fac->getSommePaiement();
$amount_credit_not_included = $fac->getSommeCreditNote();
@@ -931,21 +931,59 @@ class pdf_oursin extends ModelePDFFactures
/*
* ref facture
*/
- $posy=65;
+ $posy=70;
$pdf->SetFont('Arial','B',13);
- $pdf->SetXY($this->marges['g'],$posy);
+ $pdf->SetXY($this->marges['g'],$posy-5);
$pdf->SetTextColor(0,0,0);
- $pdf->MultiCell(100, 10, $outputlangs->transnoentities("Bill").' '.$outputlangs->transnoentities("Of").' '.dol_print_date($fac->date,"%d %B %Y",false,$outputlangs,true), '' , 'L');
+ $title=$outputlangs->transnoentities("Invoice");
+ if ($object->type == 1) $title=$outputlangs->transnoentities("InvoiceReplacement");
+ if ($object->type == 2) $title=$outputlangs->transnoentities("InvoiceAvoir");
+ if ($object->type == 3) $title=$outputlangs->transnoentities("InvoiceDeposit");
+ if ($object->type == 4) $title=$outputlangs->transnoentities("InvoiceProFormat");
+ $pdf->MultiCell(100, 10, $title.' '.$outputlangs->transnoentities("Of").' '.dol_print_date($fac->date,"day",false,$outputlangs,true), '' , 'L');
$pdf->SetFont('Arial','B',11);
- $pdf->SetXY($this->marges['g'],$posy+5);
+ $pdf->SetXY($this->marges['g'],$posy);
$pdf->SetTextColor(22,137,210);
$pdf->MultiCell(100, 10, $outputlangs->transnoentities("RefBill")." : " . $outputlangs->transnoentities($fac->ref), '', 'L');
$pdf->SetTextColor(0,0,0);
-
+ $posy+=4;
+
+ $facidnext=$object->getIdReplacingInvoice('validated');
+ if ($object->type == 0 && $facidnext)
+ {
+ $objectreplacing=new Facture($this->db);
+ $objectreplacing->fetch($facidnext);
+
+ $posy+=4;
+ $pdf->SetXY($this->marges['g'],$posy);
+ $pdf->SetTextColor(0,0,60);
+ $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ReplacementByInvoice").' : '.$outputlangs->convToOutputCharset($objectreplacing->ref), '', 'L');
+ }
+ if ($object->type == 1)
+ {
+ $objectreplaced=new Facture($this->db);
+ $objectreplaced->fetch($object->fk_facture_source);
+
+ $posy+=4;
+ $pdf->SetXY($this->marges['g'],$posy);
+ $pdf->SetTextColor(0,0,60);
+ $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ReplacementInvoice").' : '.$outputlangs->convToOutputCharset($objectreplaced->ref), '', 'L');
+ }
+ if ($object->type == 2)
+ {
+ $objectreplaced=new Facture($this->db);
+ $objectreplaced->fetch($object->fk_facture_source);
+
+ $posy+=4;
+ $pdf->SetXY($this->marges['g'],$posy);
+ $pdf->SetTextColor(0,0,60);
+ $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CorrectionInvoice").' : '.$outputlangs->convToOutputCharset($objectreplaced->ref), '', 'L');
+ }
+
if ($object->type != 2)
{
- $posy+=8;
- $pdf->SetXY($this->marges['g'],$posy+5);
+ $posy+=5;
+ $pdf->SetXY($this->marges['g'],$posy);
$pdf->SetFont('Arial','',9);
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateEcheance")." : " . dol_print_date($object->date_lim_reglement,"day",false,$outputlangs,true), '', 'L');
}
@@ -953,12 +991,12 @@ class pdf_oursin extends ModelePDFFactures
if ($object->client->code_client)
{
$posy+=4;
- $pdf->SetXY($this->marges['g'],$posy+5);
+ $pdf->SetXY($this->marges['g'],$posy);
$pdf->SetFont('Arial','',9);
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $object->client->code_client, '', 'L');
}
-
-
+
+
/*
* ref propal
*/
@@ -975,7 +1013,7 @@ class pdf_oursin extends ModelePDFFactures
if ($objp->ref)
{
$posy+=4;
- $pdf->SetXY($this->marges['g'],$posy+5);
+ $pdf->SetXY($this->marges['g'],$posy);
$pdf->SetFont('Arial','',9);
$pdf->MultiCell(60, 3, $outputlangs->transnoentities("RefProposal")." : ".$objp->ref);
}
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index 57628864db4..06fc5c47963 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -13,6 +13,12 @@ BillsStatisticsSuppliers=Suppliers' invoices statistics
InvoiceStandard=Standard invoice
InvoiceStandardAsk=Standard invoice
InvoiceStandardDesc=This kind of invoice is the common invoice.
+InvoiceDeposit=Deposit invoice
+InvoiceDepositAsk=Deposit invoice
+InvoiceDepositDesc=This kind of invoice is done when a deposit has been received.
+InvoiceProFormat=Proformat invoice
+InvoiceProFormatAsk=Proformat invoice
+InvoiceProFormatDesc=Proformat invoice is an image of a true invoice but has no accountancy value.
InvoiceReplacement=Replacement invoice. Must replace invoice with reference
InvoiceReplacementAsk=Replacement invoice for invoice
InvoiceReplacementDesc=Replacement invoice is used to cancel and replace completely an invoice with no payment already received.
Note: Only invoice with no payment on it can be replaced. If not closed, it will be automatically closed to 'abandonned'.
@@ -49,7 +55,7 @@ PaymentsBack=Payments back
DatePayment=Payment date
DeletePayment=Delete payment
ConfirmDeletePayment=Are you sure you want to delete this payment ?
-ConfirmConvertToReduc=Do you want to convert this credit note into absolute discount ? The amount of this credit note will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer.
+ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ? The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer.
SupplierPayments=Suppliers payments
ReceivedPayments=Received payments
ReceivedCustomersPayments=Payments received from customers
@@ -87,6 +93,7 @@ BillStatus=Invoice status
BillStatusDraft=Draft (needs to be validated)
BillStatusPayed=Payed
BillStatusPayedBackOrConverted=Payed or converted into discount
+BillStatusConverted=Converted into discount
BillStatusCanceled=Abandonned
BillStatusValidated=Validated (needs to be payed)
BillStatusStarted=Started
@@ -160,6 +167,7 @@ ShowBill=Show invoice
ShowInvoice=Show invoice
ShowInvoiceReplace=Show replacing invoice
ShowInvoiceAvoir=Show credit note
+ShowInvoiceDeposit=Show deposit invoice
ShowPayment=Show payment
File=File
AlreadyPayed=Already payed
diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang
index aa9618d825a..a75f6767151 100644
--- a/htdocs/langs/fr_FR/bills.lang
+++ b/htdocs/langs/fr_FR/bills.lang
@@ -14,6 +14,12 @@ BillsStatisticsSuppliers=Statistiques factures fournisseurs
InvoiceStandard=Facture standard
InvoiceStandardAsk=Facture standard
InvoiceStandardDesc=Ce type de facture est la facture traditionnelle. On l'appelle aussi facture de doit (du verbe devoir).
+InvoiceDeposit=Facture d'accompte
+InvoiceDepositAsk=Facture d'accompte
+InvoiceDepositDesc=La facture d'accompte est le type de facture faite suite à réception d'un accompte.
+InvoiceProFormat=Facture proformat
+InvoiceProFormatAsk=Facture proformat
+InvoiceProFormatDesc=La facture proformat est une image de facture définitive mais qui n'a aucune valeure comptable.
InvoiceReplacement=Facture de remplacement
InvoiceReplacementAsk=Facture de remplacement de la facture
InvoiceReplacementDesc=La facture de remplacement sert à annuler et remplacer une facture existante sur laquelle aucun paiement n'a encore eu lieu.
Rem: Seule une facture sans aucun paiement peut être remplacée. Si cette dernière n'est pas fermée, elle le sera automatiquement au statut 'abandonnée'.
@@ -49,7 +55,7 @@ PaymentsBack=Remboursements
DatePayment=Date paiement
DeletePayment=Supprimer le paiement
ConfirmDeletePayment=Etes vous sur de vouloir supprimer ce paiement ?
-ConfirmConvertToReduc=Voulez-vous convertir cet avoir en réduction future ? Le montant de cet avoir sera alors stocké en réduction fixe en attente pour le client. Cette dernière pourra être utilisée pour réduire le montant d'une facture en cours ou prochaine de ce client.
+ConfirmConvertToReduc=Voulez-vous convertir cet avoir ou accompte en réduction future ? Le montant sera alors stocké en réduction fixe en attente pour le client. Cette dernière pourra être utilisée pour réduire le montant d'une facture en cours ou prochaine de ce client.
SupplierPayments=Réglements fournisseurs
ReceivedPayments=Réglements reçus
ReceivedCustomersPayments=Réglements reçus du client
@@ -87,6 +93,7 @@ BillStatus=État de la facture
BillStatusDraft=Brouillon (Ã valider)
BillStatusPayed=Payée
BillStatusPayedBackOrConverted=Remboursé ou converti en réduction
+BillStatusConverted=Converti en réduction
BillStatusCanceled=Abandonnée
BillStatusValidated=Validée (à payer)
BillStatusStarted=Réglement commencé
@@ -160,6 +167,7 @@ ShowBill=Afficher facture
ShowInvoice=Afficher facture
ShowInvoiceReplace=Afficher facture de remplacement
ShowInvoiceAvoir=Afficher facture avoir
+ShowInvoiceDeposit=Afficher facture d'accompte
ShowPayment=Afficher réglement
File=Fichier
AlreadyPayed=Déjà réglé
diff --git a/htdocs/theme/auguria/img/object_billd.png b/htdocs/theme/auguria/img/object_billd.png
new file mode 100644
index 00000000000..3c7443cba3e
Binary files /dev/null and b/htdocs/theme/auguria/img/object_billd.png differ
diff --git a/htdocs/theme/bluelagoon/img/object_billd.png b/htdocs/theme/bluelagoon/img/object_billd.png
new file mode 100644
index 00000000000..3c7443cba3e
Binary files /dev/null and b/htdocs/theme/bluelagoon/img/object_billd.png differ
diff --git a/htdocs/theme/dev/img/object_billd.png b/htdocs/theme/dev/img/object_billd.png
new file mode 100644
index 00000000000..3c7443cba3e
Binary files /dev/null and b/htdocs/theme/dev/img/object_billd.png differ
diff --git a/htdocs/theme/eldy/img/object_billd.png b/htdocs/theme/eldy/img/object_billd.png
new file mode 100644
index 00000000000..3c7443cba3e
Binary files /dev/null and b/htdocs/theme/eldy/img/object_billd.png differ
diff --git a/htdocs/theme/eldy/img/object_billr.png b/htdocs/theme/eldy/img/object_billr.png
index 3c7443cba3e..c89098beaa5 100644
Binary files a/htdocs/theme/eldy/img/object_billr.png and b/htdocs/theme/eldy/img/object_billr.png differ
diff --git a/htdocs/theme/freelug/img/object_billd.png b/htdocs/theme/freelug/img/object_billd.png
new file mode 100644
index 00000000000..3c7443cba3e
Binary files /dev/null and b/htdocs/theme/freelug/img/object_billd.png differ
diff --git a/htdocs/theme/yellow/img/object_billd.png b/htdocs/theme/yellow/img/object_billd.png
new file mode 100644
index 00000000000..3c7443cba3e
Binary files /dev/null and b/htdocs/theme/yellow/img/object_billd.png differ
diff --git a/mysql/data/data.sql b/mysql/data/data.sql
index 75f69830434..1d5658df5d8 100644
--- a/mysql/data/data.sql
+++ b/mysql/data/data.sql
@@ -41,7 +41,6 @@ insert into llx_cond_reglement(rowid, code, sortorder, active, libelle, libelle_
insert into llx_cond_reglement(rowid, code, sortorder, active, libelle, libelle_facture, fdm, nbjour) values (3,'30DENDMONTH', 3,1, '30 jours fin de mois','Réglement à 30 jours fin de mois',1,30);
insert into llx_cond_reglement(rowid, code, sortorder, active, libelle, libelle_facture, fdm, nbjour) values (4,'60D', 4,1, '60 jours','Réglement à 60 jours',0,60);
insert into llx_cond_reglement(rowid, code, sortorder, active, libelle, libelle_facture, fdm, nbjour) values (5,'60DENDMONTH', 5,1, '60 jours fin de mois','Réglement à 60 jours fin de mois',1,60);
-insert into llx_cond_reglement(rowid, code, sortorder, active, libelle, libelle_facture, fdm, nbjour) values (6,'PROFORMA', 6,1, 'Proforma','Réglement avant livraison',0,0);
--
| |