Debut gestion des avoirs
This commit is contained in:
parent
151613496e
commit
21450a9234
@ -79,6 +79,33 @@ $NBLINES=4;
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Validation
|
||||||
|
if ($_GET['action'] == 'valid')
|
||||||
|
{
|
||||||
|
$facture = new Facture($db);
|
||||||
|
$facture->fetch($_GET['facid']);
|
||||||
|
|
||||||
|
// On verifie signe facture
|
||||||
|
if ($facture->type == 2)
|
||||||
|
{
|
||||||
|
// Si avoir, le signe doit etre négatif
|
||||||
|
if ($facture->total_ht >= 0)
|
||||||
|
{
|
||||||
|
$mesg='<div class="error">'.$langs->trans("ErrorInvoiceAvoirMustBeNegative").'</div>';
|
||||||
|
$_GET['action']='';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Si non avoir, le signe doit etre positif
|
||||||
|
if ($facture->total_ht < 0)
|
||||||
|
{
|
||||||
|
$mesg='<div class="error">'.$langs->trans("ErrorInvoiceOfThisTypeMustBePositive").'</div>';
|
||||||
|
$_GET['action']='';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($_POST['action'] == 'classin')
|
if ($_POST['action'] == 'classin')
|
||||||
{
|
{
|
||||||
$facture = new Facture($db);
|
$facture = new Facture($db);
|
||||||
@ -275,6 +302,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
|||||||
|
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
|
// Facture remplacement
|
||||||
if ($_POST['type'] == 1)
|
if ($_POST['type'] == 1)
|
||||||
{
|
{
|
||||||
if ($_POST['fac_replacement'] > 0)
|
if ($_POST['fac_replacement'] > 0)
|
||||||
@ -308,6 +336,42 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Facture avoir
|
||||||
|
if ($_POST['type'] == 2)
|
||||||
|
{
|
||||||
|
if ($_POST['fac_avoir'] > 0)
|
||||||
|
{
|
||||||
|
// Si facture avoir
|
||||||
|
$datefacture = mktime(12, 0 , 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
||||||
|
|
||||||
|
//$result=$facture->fetch($_POST['fac_avoir']);
|
||||||
|
|
||||||
|
$facture->socid = $_POST['socid'];
|
||||||
|
$facture->number = $_POST['facnumber'];
|
||||||
|
$facture->date = $datefacture;
|
||||||
|
$facture->note_public = trim($_POST['note_public']);
|
||||||
|
$facture->note = trim($_POST['note']);
|
||||||
|
$facture->ref_client = $_POST['ref_client'];
|
||||||
|
$facture->modelpdf = $_POST['model'];
|
||||||
|
$facture->projetid = $_POST['projetid'];
|
||||||
|
$facture->cond_reglement_id = 0;
|
||||||
|
$facture->mode_reglement_id = $_POST['mode_reglement_id'];
|
||||||
|
$facture->remise_absolue = $_POST['remise_absolue'];
|
||||||
|
$facture->remise_percent = $_POST['remise_percent'];
|
||||||
|
|
||||||
|
// Propriétés particulieres a facture avoir
|
||||||
|
$facture->fk_facture_source = $_POST['fac_avoir'];
|
||||||
|
$facture->type = 2;
|
||||||
|
|
||||||
|
$facid = $facture->create($user);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error=1;
|
||||||
|
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->trans("CorrectInvoice")).'</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($_POST['type'] == 0 && $_POST['fac_rec'] > 0)
|
if ($_POST['type'] == 0 && $_POST['fac_rec'] > 0)
|
||||||
{
|
{
|
||||||
// Si facture récurrente
|
// Si facture récurrente
|
||||||
@ -322,7 +386,10 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer)
|
|||||||
$facture->ref_client = $_POST['ref_client'];
|
$facture->ref_client = $_POST['ref_client'];
|
||||||
$facture->modelpdf = $_POST['model'];
|
$facture->modelpdf = $_POST['model'];
|
||||||
|
|
||||||
|
// Propriétés particulieres a facture recurrente
|
||||||
$facture->fac_rec = $_POST['fac_rec'];
|
$facture->fac_rec = $_POST['fac_rec'];
|
||||||
|
$facture->type = 3;
|
||||||
|
|
||||||
$facid = $facture->create($user);
|
$facid = $facture->create($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1029,7 +1096,7 @@ if ($_GET['action'] == 'create')
|
|||||||
/*
|
/*
|
||||||
\todo
|
\todo
|
||||||
L'info "Reference commande client" est une carac de la commande et non de la facture.
|
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.
|
Elle devrait donc etre stockée sur l'objet commande liée à la facture et non sur la facture.
|
||||||
Pour ceux qui veulent l'utiliser au niveau de la facture, positionner la
|
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 à 1.
|
||||||
*/
|
*/
|
||||||
@ -1054,6 +1121,13 @@ if ($_GET['action'] == 'create')
|
|||||||
{
|
{
|
||||||
$options.='<option value="'.$key.'">'.$value.'</option>';
|
$options.='<option value="'.$key.'">'.$value.'</option>';
|
||||||
}
|
}
|
||||||
|
$facids=$facturestatic->list_avoir_invoices($soc->id);
|
||||||
|
$optionsav="";
|
||||||
|
foreach ($facids as $key => $value)
|
||||||
|
{
|
||||||
|
$optionsav.='<option value="'.$key.'">'.$value.'</option>';
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td valign="top">'.$langs->trans('Type').'</td><td colspan="2">';
|
print '<tr><td valign="top">'.$langs->trans('Type').'</td><td colspan="2">';
|
||||||
print '<table class="nobordernopadding"><tr>';
|
print '<table class="nobordernopadding"><tr>';
|
||||||
print '<td width="16px">';
|
print '<td width="16px">';
|
||||||
@ -1062,13 +1136,16 @@ if ($_GET['action'] == 'create')
|
|||||||
$desc=$html->textwithhelp($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
|
$desc=$html->textwithhelp($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
|
||||||
print $desc;
|
print $desc;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print '<input type="radio" name="type" value="1"'.($_POST['type']==1?' checked=true':'');
|
print '<input type="radio" name="type" value="1"'.($_POST['type']==1?' checked=true':'');
|
||||||
if (! $options) print ' disabled="true"';
|
if (! $options) print ' disabled="true"';
|
||||||
print '>';
|
print '>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
$text=$langs->trans("InvoiceReplacementAsk").' ';
|
$text=$langs->trans("InvoiceReplacementAsk").' ';
|
||||||
$text.='<select name="fac_replacement">';
|
$text.='<select class="flat" name="fac_replacement"';
|
||||||
|
if (! $options) $text.=' disabled="true"';
|
||||||
|
$text.='>';
|
||||||
if ($options)
|
if ($options)
|
||||||
{
|
{
|
||||||
$text.='<option value="-1"> </option>';
|
$text.='<option value="-1"> </option>';
|
||||||
@ -1082,10 +1159,29 @@ if ($_GET['action'] == 'create')
|
|||||||
$desc=$html->textwithhelp($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
|
$desc=$html->textwithhelp($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
|
||||||
print $desc;
|
print $desc;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print '<input type="radio" name="type" value="2"'.($_POST['type']==2?' checked=true':'').' disabled>';
|
print '<input type="radio" name="type" value="2"'.($_POST['type']==2?' checked=true':'');
|
||||||
|
if (! $optionsav) print ' disabled="true"';
|
||||||
|
print '>';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
$desc=$html->textwithhelp($langs->trans("InvoiceAvoirAsk").' ('.$langs->trans("FeatureNotYetAvailable").')',$langs->transnoentities("InvoiceAvoirDesc"),1);
|
$text=$langs->transnoentities("InvoiceAvoirAsk").' ';
|
||||||
|
// $text.='<input type="text" value="">';
|
||||||
|
$text.='<select class="flat" name="fac_avoir"';
|
||||||
|
if (! $options) $text.=' disabled="true"';
|
||||||
|
$text.='>';
|
||||||
|
if ($options)
|
||||||
|
{
|
||||||
|
$text.='<option value="-1"> </option>';
|
||||||
|
$text.=$optionsav;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$text.='<option value="-1">'.$langs->trans("NoInvoiceToCorrect").'</option>';
|
||||||
|
}
|
||||||
|
$text.='</select>';
|
||||||
|
$desc=$html->textwithhelp($text,$langs->transnoentities("InvoiceAvoirDesc"),1);
|
||||||
|
//.' ('.$langs->trans("FeatureNotYetAvailable").')',$langs->transnoentities("InvoiceAvoirDesc"),1);
|
||||||
print $desc;
|
print $desc;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@ -1642,6 +1738,12 @@ else
|
|||||||
$facreplaced->fetch($fac->fk_facture_source);
|
$facreplaced->fetch($fac->fk_facture_source);
|
||||||
print ' ('.$langs->transnoentities("ReplaceInvoice",$facreplaced->getNomUrl(1)).')';
|
print ' ('.$langs->transnoentities("ReplaceInvoice",$facreplaced->getNomUrl(1)).')';
|
||||||
}
|
}
|
||||||
|
if ($fac->type == 2)
|
||||||
|
{
|
||||||
|
$facreplaced=new Facture($db);
|
||||||
|
$facreplaced->fetch($fac->fk_facture_source);
|
||||||
|
print ' ('.$langs->transnoentities("CorrectInvoice",$facreplaced->getNomUrl(1)).')';
|
||||||
|
}
|
||||||
$facidnext=$fac->getIdReplacingInvoice();
|
$facidnext=$fac->getIdReplacingInvoice();
|
||||||
if ($facidnext > 0)
|
if ($facidnext > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -50,13 +50,14 @@ class Facture extends CommonObject
|
|||||||
var $id;
|
var $id;
|
||||||
|
|
||||||
var $socid; // Id client
|
var $socid; // Id client
|
||||||
var $client; // Objet societe client (à charger par fetch_client)
|
var $client; // Objet societe client (à charger par fetch_client)
|
||||||
|
|
||||||
var $number;
|
var $number;
|
||||||
var $author;
|
var $author;
|
||||||
var $date;
|
var $date;
|
||||||
var $ref;
|
var $ref;
|
||||||
var $ref_client;
|
var $ref_client;
|
||||||
|
var $type; // 0=Facture normale, 1=Facture remplacement, 2=Facture avoir, 3=Facture récurrente
|
||||||
var $amount;
|
var $amount;
|
||||||
var $remise;
|
var $remise;
|
||||||
var $tva;
|
var $tva;
|
||||||
@ -2231,6 +2232,46 @@ class Facture extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Renvoi liste des factures qualifiables pour avoir
|
||||||
|
* Statut validee + pas deja remplacées
|
||||||
|
* \param socid Id societe
|
||||||
|
* \return array Tableau des factures ($id => $ref)
|
||||||
|
*/
|
||||||
|
function list_avoir_invoices($socid=0)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
$sql = "SELECT f.rowid as rowid, f.facnumber";
|
||||||
|
$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.= " WHERE f.fk_statut >= 1 AND f.paye = 0";
|
||||||
|
if ($socid > 0) $sql.=" AND f.fk_soc = ".$socid;
|
||||||
|
$sql.= " ORDER BY f.facnumber";
|
||||||
|
|
||||||
|
dolibarr_syslog("Facture.class::list_avoir_invoices sql=$sql");
|
||||||
|
$resql=$this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
while ($obj=$this->db->fetch_object($resql))
|
||||||
|
{
|
||||||
|
$return[$obj->rowid]=$obj->facnumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->error=$this->db->error();
|
||||||
|
dolibarr_syslog("Facture.class::list_avoir_invoices ".$this->error);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Créé une demande de prélèvement
|
* \brief Créé une demande de prélèvement
|
||||||
* \param user Utilisateur créant la demande
|
* \param user Utilisateur créant la demande
|
||||||
|
|||||||
@ -496,7 +496,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
/*
|
/*
|
||||||
* Conditions de règlements
|
* Conditions de règlements
|
||||||
*/
|
*/
|
||||||
if ($object->cond_reglement_code || $object->cond_reglement)
|
if ($object->type != 2 && ($object->cond_reglement_code || $object->cond_reglement))
|
||||||
{
|
{
|
||||||
$pdf->SetFont('Arial','B',8);
|
$pdf->SetFont('Arial','B',8);
|
||||||
$pdf->SetXY($this->marge_gauche, $posy);
|
$pdf->SetXY($this->marge_gauche, $posy);
|
||||||
@ -514,7 +514,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
/*
|
/*
|
||||||
* Check si absence mode règlement
|
* Check si absence mode règlement
|
||||||
*/
|
*/
|
||||||
if (! $conf->global->FACTURE_CHQ_NUMBER && ! $conf->global->FACTURE_RIB_NUMBER)
|
if ($object->type != 2 && (! $conf->global->FACTURE_CHQ_NUMBER && ! $conf->global->FACTURE_RIB_NUMBER))
|
||||||
{
|
{
|
||||||
$pdf->SetXY($this->marge_gauche, $posy);
|
$pdf->SetXY($this->marge_gauche, $posy);
|
||||||
$pdf->SetTextColor(200,0,0);
|
$pdf->SetTextColor(200,0,0);
|
||||||
@ -528,7 +528,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
/*
|
/*
|
||||||
* Propose mode règlement par CHQ
|
* Propose mode règlement par CHQ
|
||||||
*/
|
*/
|
||||||
if (! $object->mode_reglement_code || $object->mode_reglement_code == 'CHQ')
|
if ($object->type != 2 && (! $object->mode_reglement_code || $object->mode_reglement_code == 'CHQ'))
|
||||||
{
|
{
|
||||||
// Si mode reglement non force ou si force a CHQ
|
// Si mode reglement non force ou si force a CHQ
|
||||||
if ($conf->global->FACTURE_CHQ_NUMBER)
|
if ($conf->global->FACTURE_CHQ_NUMBER)
|
||||||
@ -568,7 +568,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
/*
|
/*
|
||||||
* Propose mode règlement par RIB
|
* Propose mode règlement par RIB
|
||||||
*/
|
*/
|
||||||
if (! $object->mode_reglement_code || $object->mode_reglement_code == 'VIR')
|
if ($object->type != 2 && (! $object->mode_reglement_code || $object->mode_reglement_code == 'VIR'))
|
||||||
{
|
{
|
||||||
// Si mode reglement non force ou si force a VIR
|
// Si mode reglement non force ou si force a VIR
|
||||||
if ($conf->global->FACTURE_RIB_NUMBER)
|
if ($conf->global->FACTURE_RIB_NUMBER)
|
||||||
@ -651,7 +651,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + 0);
|
$pdf->SetXY ($col2x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht + $object->remise), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($object->total_ht + $object->remise)), 0, 'R', 1);
|
||||||
|
|
||||||
// Remise globale
|
// Remise globale
|
||||||
if ($object->remise > 0)
|
if ($object->remise > 0)
|
||||||
@ -666,7 +666,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("WithDiscountTotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("WithDiscountTotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2);
|
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($object->total_ht)), 0, 'R', 1);
|
||||||
|
|
||||||
$index = 2;
|
$index = 2;
|
||||||
}
|
}
|
||||||
@ -689,7 +689,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalVAT").' '.abs($tvakey).'%'.$tvacompl, 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalVAT").' '.abs($tvakey).'%'.$tvacompl, 0, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval * (float)$tvakey / 100 ), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($tvaval * (float)$tvakey / 100 )), 0, 'R', 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (! $this->atleastoneratenotnull)
|
if (! $this->atleastoneratenotnull)
|
||||||
@ -699,7 +699,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalVAT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalVAT"), 0, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_tva), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($object->total_tva)), 0, 'R', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$useborder=0;
|
$useborder=0;
|
||||||
@ -708,10 +708,12 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
|
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index);
|
||||||
$pdf->SetTextColor(0,0,60);
|
$pdf->SetTextColor(0,0,60);
|
||||||
$pdf->SetFillColor(224,224,224);
|
$pdf->SetFillColor(224,224,224);
|
||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("TotalTTC"), $useborder, 'L', 1);
|
$text=$outputlangs->trans("TotalTTC");
|
||||||
|
if ($object->type == 2) $text=$outputlangs->trans("TotalTTCToYourCredit");
|
||||||
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $text, $useborder, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc), $useborder, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($object->total_ttc)), $useborder, 'R', 1);
|
||||||
$pdf->SetTextColor(0,0,0);
|
$pdf->SetTextColor(0,0,0);
|
||||||
|
|
||||||
if ($deja_regle > 0)
|
if ($deja_regle > 0)
|
||||||
@ -736,7 +738,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("EscompteOffered"), $useborder, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("EscompteOffered"), $useborder, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc - $deja_regle), $useborder, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($object->total_ttc - $deja_regle)), $useborder, 'R', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$index++;
|
$index++;
|
||||||
@ -746,7 +748,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("RemainderToPay"), $useborder, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->trans("RemainderToPay"), $useborder, 'L', 1);
|
||||||
|
|
||||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($resteapayer), $useborder, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price(abs($resteapayer)), $useborder, 'R', 1);
|
||||||
|
|
||||||
// Fin
|
// Fin
|
||||||
$pdf->SetFont('Arial','', 9);
|
$pdf->SetFont('Arial','', 9);
|
||||||
|
|||||||
@ -15,11 +15,13 @@ InvoiceReplacement=Replacement invoice. Must replace invoice with reference
|
|||||||
InvoiceReplacementAsk=Replacement invoice for invoice
|
InvoiceReplacementAsk=Replacement invoice for invoice
|
||||||
InvoiceReplacementDesc=<b>Replacement invoice</b> is used to cancel and replace completely an invoice with no paiement already recevided.<br>Reference of canceled invoice is required.
|
InvoiceReplacementDesc=<b>Replacement invoice</b> is used to cancel and replace completely an invoice with no paiement already recevided.<br>Reference of canceled invoice is required.
|
||||||
InvoiceAvoir=Avoir invoice
|
InvoiceAvoir=Avoir invoice
|
||||||
InvoiceAvoirAsk=Avoir invoice
|
InvoiceAvoirAsk=Avoir invoice to correct invoice
|
||||||
InvoiceAvoirDesc=La <b>facture d'avoir</b> est une facture négative destinée à compenser une facture comportant un montant supérieur à ce qui a été ou sera réellement payé (toutes causes possibles).
|
InvoiceAvoirDesc=La <b>facture d'avoir</b> est une facture négative destinée à compenser une facture comportant un montant supérieur à ce qui a été ou sera réellement payé (toutes causes possibles).
|
||||||
ReplaceInvoice=Replace invoice %s
|
ReplaceInvoice=Replace invoice %s
|
||||||
ReplacedByInvoice=Replaced by invoice %s
|
ReplacedByInvoice=Replaced by invoice %s
|
||||||
|
CorrectInvoice=Correct invoice %s
|
||||||
NoReplacableInvoice=No replacable invoices
|
NoReplacableInvoice=No replacable invoices
|
||||||
|
NoInvoiceToCorrect=No invoice to correct
|
||||||
CardBill=Invoice card
|
CardBill=Invoice card
|
||||||
Invoice=Invoice
|
Invoice=Invoice
|
||||||
Invoices=Invoices
|
Invoices=Invoices
|
||||||
@ -58,6 +60,7 @@ DoPayment=Do payment
|
|||||||
VAT=VAT
|
VAT=VAT
|
||||||
VATRate=VAT Rate
|
VATRate=VAT Rate
|
||||||
Amount=Amount
|
Amount=Amount
|
||||||
|
TotalTTCToYourCredit=Total TTC to your credit
|
||||||
BillStatus=Invoice status
|
BillStatus=Invoice status
|
||||||
BillStatusDraft=Draft (need to be validated)
|
BillStatusDraft=Draft (need to be validated)
|
||||||
BillStatusPayed=Payed
|
BillStatusPayed=Payed
|
||||||
@ -82,6 +85,8 @@ ErrorCreateBankAccount=Creat a bank account then go to Setup panel of Invoice mo
|
|||||||
ErrorBillNotFound=Invoice %s does not exists
|
ErrorBillNotFound=Invoice %s does not exists
|
||||||
ErrorInvoiceAlreadyReplaced=Error, invoice %s has already been replaced by invoice %s
|
ErrorInvoiceAlreadyReplaced=Error, invoice %s has already been replaced by invoice %s
|
||||||
ErrorDiscountAlreadyUsed=Error, discount already used
|
ErrorDiscountAlreadyUsed=Error, discount already used
|
||||||
|
ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount
|
||||||
|
ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have a positive amount
|
||||||
BillFrom=From
|
BillFrom=From
|
||||||
BillTo=Bill to
|
BillTo=Bill to
|
||||||
ActionsOnBill=Actions on invoice
|
ActionsOnBill=Actions on invoice
|
||||||
|
|||||||
@ -15,11 +15,13 @@ InvoiceReplacement=Facture de remplacement
|
|||||||
InvoiceReplacementAsk=Facture de remplacement de la facture
|
InvoiceReplacementAsk=Facture de remplacement de la facture
|
||||||
InvoiceReplacementDesc=La <b>facture de remplacement</b> sert à annuler et remplacer une facture existante sur laquelle aucun paiement n'a encore eu lieu.<br>La référence de la facture qui doit être annulée est obligatoire.
|
InvoiceReplacementDesc=La <b>facture de remplacement</b> sert à annuler et remplacer une facture existante sur laquelle aucun paiement n'a encore eu lieu.<br>La référence de la facture qui doit être annulée est obligatoire.
|
||||||
InvoiceAvoir=Facture avoir
|
InvoiceAvoir=Facture avoir
|
||||||
InvoiceAvoirAsk=Facture avoir
|
InvoiceAvoirAsk=Facture avoir pour correction de la facture
|
||||||
InvoiceAvoirDesc=La <b>facture d'avoir</b> est une facture négative destinée à compenser une facture comportant un montant supérieur à ce qui a été ou sera réellement payé (toutes causes possibles).
|
InvoiceAvoirDesc=La <b>facture d'avoir</b> est une facture négative destinée à compenser une facture comportant un montant supérieur à ce qui a été ou sera réellement payé (toutes causes possibles).
|
||||||
ReplaceInvoice=Remplace la facture %s
|
ReplaceInvoice=Remplace la facture %s
|
||||||
ReplacedByInvoice=Remplacée par la facture %s
|
ReplacedByInvoice=Remplacée par la facture %s
|
||||||
|
CorrectInvoice=Corrige facture %s
|
||||||
NoReplacableInvoice=Pas de factures remplacables
|
NoReplacableInvoice=Pas de factures remplacables
|
||||||
|
NoInvoiceToCorrect=Pas de factures à corriger
|
||||||
CardBill=Fiche facture
|
CardBill=Fiche facture
|
||||||
Invoice=Facture
|
Invoice=Facture
|
||||||
Invoices=Factures
|
Invoices=Factures
|
||||||
@ -58,6 +60,7 @@ DoPayment=
|
|||||||
VAT=TVA
|
VAT=TVA
|
||||||
VATRate=Taux TVA
|
VATRate=Taux TVA
|
||||||
Amount=Montant
|
Amount=Montant
|
||||||
|
TotalTTCToYourCredit=Total TTC à votre crédit
|
||||||
BillStatus=État de la facture
|
BillStatus=État de la facture
|
||||||
BillStatusDraft=Brouillon (à valider)
|
BillStatusDraft=Brouillon (à valider)
|
||||||
BillStatusPayed=Payée
|
BillStatusPayed=Payée
|
||||||
@ -82,6 +85,8 @@ ErrorCreateBankAccount=Cr
|
|||||||
ErrorBillNotFound=Facture %s inexistante
|
ErrorBillNotFound=Facture %s inexistante
|
||||||
ErrorInvoiceAlreadyReplaced=Erreur, la facture %s a déjà été remplacée par la facture %s
|
ErrorInvoiceAlreadyReplaced=Erreur, la facture %s a déjà été remplacée par la facture %s
|
||||||
ErrorDiscountAlreadyUsed=Erreur, la remise a déjà été attribuée
|
ErrorDiscountAlreadyUsed=Erreur, la remise a déjà été attribuée
|
||||||
|
ErrorInvoiceAvoirMustBeNegative=Erreur, une facture de type Avoir doit avoir un montant négatif
|
||||||
|
ErrorInvoiceOfThisTypeMustBePositive=Erreur, une facture de ce type doit avoir un montant positif
|
||||||
BillFrom=Émetteur
|
BillFrom=Émetteur
|
||||||
BillTo=Adressé à
|
BillTo=Adressé à
|
||||||
ActionsOnBill=Actions sur la facture
|
ActionsOnBill=Actions sur la facture
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user