diff --git a/ChangeLog.md b/ChangeLog.md index 576c7fc..902eefc 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,9 @@ # Délégation ChangeLog +## 1.0.2 (2026-01-20) + +- Ajout d'une page récapitulative des factures fournisseurs en délégation dans les modèles PDF Inpose et Crabe BTP. + ## 1.0.1 (2026-01-19) - Ajout du support de l'autoliquidation de TVA sur les devis, commandes et factures client liés à un contrat de sous-traitance. diff --git a/README.md b/README.md index 6dcff51..7c160f0 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Ce module gère : - les contrats de sous-traitance ; - l'autoliquidation de TVA sur les documents clients liés aux contrats de sous-traitance ; - le formulaire DC4 (saisie, génération et données associées). +- un récapitulatif des factures fournisseurs en délégation dans certains modèles PDF. Compatibilité : Dolibarr v21+. diff --git a/core/modules/facture/doc/pdf_crabe_btp_inpose.modules.php b/core/modules/facture/doc/pdf_crabe_btp_inpose.modules.php index 5ebfb2f..1d90a7e 100644 --- a/core/modules/facture/doc/pdf_crabe_btp_inpose.modules.php +++ b/core/modules/facture/doc/pdf_crabe_btp_inpose.modules.php @@ -37,6 +37,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; // TSubtotal if (!empty($conf->subtotal->enabled)) dol_include_once('/subtotal/class/subtotal.class.php'); @@ -972,6 +974,10 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid } + // EN: Add supplier invoices summary page for delegation. + // FR: Ajouter la page récapitulative des factures fournisseurs en délégation. + $this->_addDelegationSupplierInvoicesSummaryPage($pdf, $object, $outputlangs, $tplidx); + $pdf->Close(); $pdf->Output($file,'F'); @@ -1003,6 +1009,265 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid } + /** + * Add supplier invoices summary page for delegation. + * + * @param TCPDF $pdf Object PDF + * @param Object $object Object invoice + * @param Translate $outputlangs Object lang for output + * @param int $tplidx Template index + * @return int <0 if KO, >=0 if OK + */ + protected function _addDelegationSupplierInvoicesSummaryPage(&$pdf, $object, $outputlangs, $tplidx) + { + global $conf; + + if (empty($conf->delegation->enabled)) + { + return 0; + } + + $outputlangs->load("delegation@delegation"); + + // Load delegation lines and supplier invoice ids. + dol_include_once("/delegation/class/delegation.class.php"); + $GLOBALS['object'] = $object; + $delegation = new Delegation($this->db); + $delegation->fetch(); + + $supplierInvoiceIds = array(); + foreach ($delegation->lines as $line) + { + if (! empty($line->fk_facture_fourn)) + { + $supplierInvoiceIds[] = (int) $line->fk_facture_fourn; + } + } + $supplierInvoiceIds = array_unique($supplierInvoiceIds); + + if (empty($supplierInvoiceIds)) + { + return 0; + } + + // Order supplier invoices with same source as delegation tab. + $sql = "SELECT f.rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + $sql.= " WHERE f.rowid IN (".implode(',', $supplierInvoiceIds).")"; + $sql.= " ORDER BY f.datef DESC"; + + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error = $this->db->lasterror(); + return -1; + } + + $supplierInvoices = array(); + $total_ht = 0; + $total_tva = 0; + $total_ttc = 0; + while ($obj = $this->db->fetch_object($resql)) + { + $invoice = new FactureFournisseur($this->db); + if ($invoice->fetch((int) $obj->rowid) > 0) + { + $invoice->fetch_thirdparty(); + $supplierInvoices[] = $invoice; + $total_ht += (float) $invoice->total_ht; + $total_tva += (float) $invoice->total_tva; + $total_ttc += (float) $invoice->total_ttc; + } + } + + if (empty($supplierInvoices)) + { + return 0; + } + + $default_font_size = pdf_getPDFFontSize($outputlangs); + $line_height = 6; + $title_top_offset = 25; + $table_top_offset = 5; + $posx = $this->marge_gauche; + $posy = $this->marge_haute; + + // Start summary page. + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + + $pdf->SetFont('', 'B', $default_font_size); + $pdf->SetXY($posx, $posy + $title_top_offset); + $pdf->MultiCell(0, 6, $outputlangs->transnoentities('DelegationSupplierInvoicesSummaryTitle'), 0, 'L', 0); + $posy = $pdf->GetY() + 2 + $table_top_offset; + + $base_columns = array( + array('label' => $outputlangs->transnoentities('Ref'), 'width' => 26, 'align' => 'L'), + array('label' => $outputlangs->transnoentities('Supplier'), 'width' => 54, 'align' => 'L'), + array('label' => $outputlangs->transnoentities('AmountHT'), 'width' => 18, 'align' => 'R'), + array('label' => $outputlangs->transnoentities('AmountVAT'), 'width' => 18, 'align' => 'R'), + array('label' => $outputlangs->transnoentities('AmountTTC'), 'width' => 18, 'align' => 'R'), + array('label' => $outputlangs->transnoentities('DateInvoice'), 'width' => 28, 'align' => 'C'), + array('label' => $outputlangs->transnoentities('DateDue'), 'width' => 28, 'align' => 'C'), + ); + $usable_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite; + $base_total = 0; + foreach ($base_columns as $base_column) + { + $base_total += $base_column['width']; + } + $columns = array(); + $running_width = 0; + foreach ($base_columns as $index => $base_column) + { + $column = $base_column; + if ($index === (count($base_columns) - 1)) + { + $column['width'] = $usable_width - $running_width; + } + else + { + $column['width'] = $base_total > 0 ? round($base_column['width'] * $usable_width / $base_total, 2) : $base_column['width']; + $running_width += $column['width']; + } + $columns[] = $column; + } + + // Draw table header. + $pdf->SetFillColor(230, 230, 230); + $pdf->SetFont('', 'B', $default_font_size - 1); + $curx = $posx; + foreach ($columns as $column) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($column['width'], $line_height, $column['label'], 1, 'C', 1); + $curx += $column['width']; + } + $posy += $line_height; + + $pdf->SetFont('', '', $default_font_size - 1); + + foreach ($supplierInvoices as $invoice) + { + // Robust dates for supplier invoices (Dolibarr v20+ / retro-compatible) + $invDate = ! empty($invoice->date) ? $invoice->date : (! empty($invoice->datef) ? $invoice->datef : 0); + $dueDate = ! empty($invoice->date_echeance) ? $invoice->date_echeance : (! empty($invoice->date_lim_reglement) ? $invoice->date_lim_reglement : 0); + $invoice_datef = ! empty($invDate) ? dol_print_date($invDate, 'day', false, $outputlangs) : ''; + $invoice_date_due = ! empty($dueDate) ? dol_print_date($dueDate, 'day', false, $outputlangs, true) : ''; + $values = array( + $invoice->ref, + $invoice->thirdparty->name, + price($invoice->total_ht, 0, $outputlangs), + price($invoice->total_tva, 0, $outputlangs), + price($invoice->total_ttc, 0, $outputlangs), + $invoice_datef, + $invoice_date_due, + ); + + $row_height = $line_height; + if (method_exists($pdf, 'getStringHeight')) + { + foreach ($values as $index => $value) + { + $row_height = max($row_height, $pdf->getStringHeight($columns[$index]['width'], $value)); + } + } + + if ($posy + $row_height > ($this->page_hauteur - $this->marge_basse)) + { + $this->_pagefoot($pdf, $object, $outputlangs); + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $posy = $this->marge_haute; + + $pdf->SetFont('', 'B', $default_font_size); + $pdf->SetXY($posx, $posy + $title_top_offset); + $pdf->MultiCell(0, 6, $outputlangs->transnoentities('DelegationSupplierInvoicesSummaryTitle'), 0, 'L', 0); + $posy = $pdf->GetY() + 2 + $table_top_offset; + + $pdf->SetFillColor(230, 230, 230); + $pdf->SetFont('', 'B', $default_font_size - 1); + $curx = $posx; + foreach ($columns as $column) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($column['width'], $line_height, $column['label'], 1, 'C', 1); + $curx += $column['width']; + } + $posy += $line_height; + $pdf->SetFont('', '', $default_font_size - 1); + } + + $curx = $posx; + foreach ($values as $index => $value) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($columns[$index]['width'], $row_height, $value, 1, $columns[$index]['align'], 0); + $curx += $columns[$index]['width']; + } + $posy += $row_height; + } + + // Totals row with invoice count. + $total_label = $outputlangs->transnoentities('DelegationTotalsWithCount', count($supplierInvoices)); + $row_height = $line_height; + if (method_exists($pdf, 'getStringHeight')) + { + $row_height = max($row_height, $pdf->getStringHeight($columns[0]['width'] + $columns[1]['width'], $total_label)); + } + + if ($posy + $row_height > ($this->page_hauteur - $this->marge_basse)) + { + $this->_pagefoot($pdf, $object, $outputlangs); + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $posy = $this->marge_haute; + + $pdf->SetFont('', 'B', $default_font_size); + $pdf->SetXY($posx, $posy + $title_top_offset); + $pdf->MultiCell(0, 6, $outputlangs->transnoentities('DelegationSupplierInvoicesSummaryTitle'), 0, 'L', 0); + $posy = $pdf->GetY() + 2 + $table_top_offset; + + $pdf->SetFillColor(230, 230, 230); + $pdf->SetFont('', 'B', $default_font_size - 1); + $curx = $posx; + foreach ($columns as $column) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($column['width'], $line_height, $column['label'], 1, 'C', 1); + $curx += $column['width']; + } + $posy += $line_height; + } + + $pdf->SetFont('', 'B', $default_font_size - 1); + $pdf->SetXY($posx, $posy); + $pdf->MultiCell($columns[0]['width'] + $columns[1]['width'], $row_height, $total_label, 1, 'L', 0); + + $curx = $posx + $columns[0]['width'] + $columns[1]['width']; + $totals_values = array( + price($total_ht, 0, $outputlangs), + price($total_tva, 0, $outputlangs), + price($total_ttc, 0, $outputlangs), + '', + '', + ); + foreach ($totals_values as $index => $value) + { + $column_index = $index + 2; + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($columns[$column_index]['width'], $row_height, $value, 1, $columns[$column_index]['align'], 0); + $curx += $columns[$column_index]['width']; + } + + $this->_pagefoot($pdf, $object, $outputlangs); + + return 1; + } + /** * Show payments table * diff --git a/core/modules/facture/doc/pdf_inpose.modules.php b/core/modules/facture/doc/pdf_inpose.modules.php index 70a46f3..55e8c8c 100644 --- a/core/modules/facture/doc/pdf_inpose.modules.php +++ b/core/modules/facture/doc/pdf_inpose.modules.php @@ -36,6 +36,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; @@ -698,6 +700,10 @@ public function write_file($object, $outputlangs, $srctemplatepath = '', $hidede $this->_pagefoot($pdf, $object, $outputlangs); if (method_exists($pdf, 'AliasNbPages')) $pdf->AliasNbPages(); + // EN: Add supplier invoices summary page for delegation. + // FR: Ajouter la page récapitulative des factures fournisseurs en délégation. + $this->_addDelegationSupplierInvoicesSummaryPage($pdf, $object, $outputlangs, $tplidx); + $pdf->Close(); $pdf->Output($file, 'F'); @@ -768,6 +774,265 @@ public function write_file($object, $outputlangs, $srctemplatepath = '', $hidede } } + /** + * Add supplier invoices summary page for delegation. + * + * @param PDF $pdf Object PDF + * @param Object $object Object invoice + * @param Translate $outputlangs Object lang for output + * @param int $tplidx Template index + * @return int <0 if KO, >=0 if OK + */ + protected function _addDelegationSupplierInvoicesSummaryPage(&$pdf, $object, $outputlangs, $tplidx) + { + global $conf; + + if (empty($conf->delegation->enabled)) + { + return 0; + } + + $outputlangs->load("delegation@delegation"); + + // Load delegation lines and supplier invoice ids. + dol_include_once("/delegation/class/delegation.class.php"); + $GLOBALS['object'] = $object; + $delegation = new Delegation($this->db); + $delegation->fetch(); + + $supplierInvoiceIds = array(); + foreach ($delegation->lines as $line) + { + if (! empty($line->fk_facture_fourn)) + { + $supplierInvoiceIds[] = (int) $line->fk_facture_fourn; + } + } + $supplierInvoiceIds = array_unique($supplierInvoiceIds); + + if (empty($supplierInvoiceIds)) + { + return 0; + } + + // Order supplier invoices with same source as delegation tab. + $sql = "SELECT f.rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + $sql.= " WHERE f.rowid IN (".implode(',', $supplierInvoiceIds).")"; + $sql.= " ORDER BY f.datef DESC"; + + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error = $this->db->lasterror(); + return -1; + } + + $supplierInvoices = array(); + $total_ht = 0; + $total_tva = 0; + $total_ttc = 0; + while ($obj = $this->db->fetch_object($resql)) + { + $invoice = new FactureFournisseur($this->db); + if ($invoice->fetch((int) $obj->rowid) > 0) + { + $invoice->fetch_thirdparty(); + $supplierInvoices[] = $invoice; + $total_ht += (float) $invoice->total_ht; + $total_tva += (float) $invoice->total_tva; + $total_ttc += (float) $invoice->total_ttc; + } + } + + if (empty($supplierInvoices)) + { + return 0; + } + + $default_font_size = pdf_getPDFFontSize($outputlangs); + $line_height = 6; + $title_top_offset = 25; + $table_top_offset = 5; + $posx = $this->marge_gauche; + $posy = $this->marge_haute; + + // Start summary page. + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + + $pdf->SetFont('', 'B', $default_font_size); + $pdf->SetXY($posx, $posy + $title_top_offset); + $pdf->MultiCell(0, 6, $outputlangs->transnoentities('DelegationSupplierInvoicesSummaryTitle'), 0, 'L', 0); + $posy = $pdf->GetY() + 2 + $table_top_offset; + + $base_columns = array( + array('label' => $outputlangs->transnoentities('Ref'), 'width' => 26, 'align' => 'L'), + array('label' => $outputlangs->transnoentities('Supplier'), 'width' => 54, 'align' => 'L'), + array('label' => $outputlangs->transnoentities('AmountHT'), 'width' => 18, 'align' => 'R'), + array('label' => $outputlangs->transnoentities('AmountVAT'), 'width' => 18, 'align' => 'R'), + array('label' => $outputlangs->transnoentities('AmountTTC'), 'width' => 18, 'align' => 'R'), + array('label' => $outputlangs->transnoentities('DateInvoice'), 'width' => 28, 'align' => 'C'), + array('label' => $outputlangs->transnoentities('DateDue'), 'width' => 28, 'align' => 'C'), + ); + $usable_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite; + $base_total = 0; + foreach ($base_columns as $base_column) + { + $base_total += $base_column['width']; + } + $columns = array(); + $running_width = 0; + foreach ($base_columns as $index => $base_column) + { + $column = $base_column; + if ($index === (count($base_columns) - 1)) + { + $column['width'] = $usable_width - $running_width; + } + else + { + $column['width'] = $base_total > 0 ? round($base_column['width'] * $usable_width / $base_total, 2) : $base_column['width']; + $running_width += $column['width']; + } + $columns[] = $column; + } + + // Draw table header. + $pdf->SetFillColor(230, 230, 230); + $pdf->SetFont('', 'B', $default_font_size - 1); + $curx = $posx; + foreach ($columns as $column) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($column['width'], $line_height, $column['label'], 1, 'C', 1); + $curx += $column['width']; + } + $posy += $line_height; + + $pdf->SetFont('', '', $default_font_size - 1); + + foreach ($supplierInvoices as $invoice) + { + // Robust dates for supplier invoices (Dolibarr v20+ / retro-compatible) + $invDate = ! empty($invoice->date) ? $invoice->date : (! empty($invoice->datef) ? $invoice->datef : 0); + $dueDate = ! empty($invoice->date_echeance) ? $invoice->date_echeance : (! empty($invoice->date_lim_reglement) ? $invoice->date_lim_reglement : 0); + $invoice_datef = ! empty($invDate) ? dol_print_date($invDate, 'day', false, $outputlangs) : ''; + $invoice_date_due = ! empty($dueDate) ? dol_print_date($dueDate, 'day', false, $outputlangs, true) : ''; + $values = array( + $invoice->ref, + $invoice->thirdparty->name, + price($invoice->total_ht, 0, $outputlangs), + price($invoice->total_tva, 0, $outputlangs), + price($invoice->total_ttc, 0, $outputlangs), + $invoice_datef, + $invoice_date_due, + ); + + $row_height = $line_height; + if (method_exists($pdf, 'getStringHeight')) + { + foreach ($values as $index => $value) + { + $row_height = max($row_height, $pdf->getStringHeight($columns[$index]['width'], $value)); + } + } + + if ($posy + $row_height > ($this->page_hauteur - $this->marge_basse)) + { + $this->_pagefoot($pdf, $object, $outputlangs); + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $posy = $this->marge_haute; + + $pdf->SetFont('', 'B', $default_font_size); + $pdf->SetXY($posx, $posy + $title_top_offset); + $pdf->MultiCell(0, 6, $outputlangs->transnoentities('DelegationSupplierInvoicesSummaryTitle'), 0, 'L', 0); + $posy = $pdf->GetY() + 2 + $table_top_offset; + + $pdf->SetFillColor(230, 230, 230); + $pdf->SetFont('', 'B', $default_font_size - 1); + $curx = $posx; + foreach ($columns as $column) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($column['width'], $line_height, $column['label'], 1, 'C', 1); + $curx += $column['width']; + } + $posy += $line_height; + $pdf->SetFont('', '', $default_font_size - 1); + } + + $curx = $posx; + foreach ($values as $index => $value) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($columns[$index]['width'], $row_height, $value, 1, $columns[$index]['align'], 0); + $curx += $columns[$index]['width']; + } + $posy += $row_height; + } + + // Totals row with invoice count. + $total_label = $outputlangs->transnoentities('DelegationTotalsWithCount', count($supplierInvoices)); + $row_height = $line_height; + if (method_exists($pdf, 'getStringHeight')) + { + $row_height = max($row_height, $pdf->getStringHeight($columns[0]['width'] + $columns[1]['width'], $total_label)); + } + + if ($posy + $row_height > ($this->page_hauteur - $this->marge_basse)) + { + $this->_pagefoot($pdf, $object, $outputlangs); + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $posy = $this->marge_haute; + + $pdf->SetFont('', 'B', $default_font_size); + $pdf->SetXY($posx, $posy + $title_top_offset); + $pdf->MultiCell(0, 6, $outputlangs->transnoentities('DelegationSupplierInvoicesSummaryTitle'), 0, 'L', 0); + $posy = $pdf->GetY() + 2 + $table_top_offset; + + $pdf->SetFillColor(230, 230, 230); + $pdf->SetFont('', 'B', $default_font_size - 1); + $curx = $posx; + foreach ($columns as $column) + { + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($column['width'], $line_height, $column['label'], 1, 'C', 1); + $curx += $column['width']; + } + $posy += $line_height; + } + + $pdf->SetFont('', 'B', $default_font_size - 1); + $pdf->SetXY($posx, $posy); + $pdf->MultiCell($columns[0]['width'] + $columns[1]['width'], $row_height, $total_label, 1, 'L', 0); + + $curx = $posx + $columns[0]['width'] + $columns[1]['width']; + $totals_values = array( + price($total_ht, 0, $outputlangs), + price($total_tva, 0, $outputlangs), + price($total_ttc, 0, $outputlangs), + '', + '', + ); + foreach ($totals_values as $index => $value) + { + $column_index = $index + 2; + $pdf->SetXY($curx, $posy); + $pdf->MultiCell($columns[$column_index]['width'], $row_height, $value, 1, $columns[$column_index]['align'], 0); + $curx += $columns[$column_index]['width']; + } + + $this->_pagefoot($pdf, $object, $outputlangs); + + return 1; + } + /** * Show payments table * @@ -2091,4 +2356,3 @@ function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) } } - diff --git a/langs/de_DE/delegation.lang b/langs/de_DE/delegation.lang index 86c14d8..07fa293 100644 --- a/langs/de_DE/delegation.lang +++ b/langs/de_DE/delegation.lang @@ -24,6 +24,8 @@ DelegationSupplierInvoiceMissing=Bitte eine Lieferantenrechnung auswählen. DelegationSupplierInvoiceNotFound=Lieferantenrechnung nicht gefunden. DelegationSupplierInvoiceNotAllowed=Die Lieferantenrechnung ist für die Delegation nicht geeignet. DelegationSupplierInvoiceAlreadyLinked=Diese Lieferantenrechnung ist bereits mit der Delegation verknüpft. +DelegationSupplierInvoicesSummaryTitle=Übersicht der Lieferantenrechnungen unter Zahlungsdelegation +DelegationTotalsWithCount=Summen (%s Rechnungen) DelegationAmountExceeded=Die Summe der delegierten Beträge übersteigt den Rechnungsbetrag. DelegationClearingAccountMissingCountry=Bitte das Land des Unternehmens festlegen, bevor das Durchlaufkonto erstellt wird. non_renseigne=Nicht ausgefüllt diff --git a/langs/en_US/delegation.lang b/langs/en_US/delegation.lang index ad1dcde..461523c 100644 --- a/langs/en_US/delegation.lang +++ b/langs/en_US/delegation.lang @@ -24,6 +24,8 @@ DelegationSupplierInvoiceMissing=Please select a supplier invoice. DelegationSupplierInvoiceNotFound=Supplier invoice not found. DelegationSupplierInvoiceNotAllowed=The supplier invoice is not eligible for delegation. DelegationSupplierInvoiceAlreadyLinked=This supplier invoice is already linked to the delegation. +DelegationSupplierInvoicesSummaryTitle=Summary of supplier invoices under payment delegation +DelegationTotalsWithCount=Totals (%s invoices) DelegationAmountExceeded=The total delegated amounts exceed the invoice amount. DelegationClearingAccountMissingCountry=Please set the company country before creating the clearing account. non_renseigne=Not set diff --git a/langs/es_ES/delegation.lang b/langs/es_ES/delegation.lang index 8c8fec3..457acc7 100644 --- a/langs/es_ES/delegation.lang +++ b/langs/es_ES/delegation.lang @@ -24,6 +24,8 @@ DelegationSupplierInvoiceMissing=Seleccione una factura de proveedor. DelegationSupplierInvoiceNotFound=Factura de proveedor no encontrada. DelegationSupplierInvoiceNotAllowed=La factura de proveedor no es elegible para la delegación. DelegationSupplierInvoiceAlreadyLinked=Esta factura de proveedor ya está vinculada a la delegación. +DelegationSupplierInvoicesSummaryTitle=Resumen de facturas de proveedor en delegación de pago +DelegationTotalsWithCount=Totales (%s facturas) DelegationAmountExceeded=El total de los importes delegados supera el importe de la factura. DelegationClearingAccountMissingCountry=Configure el país de la empresa antes de crear la cuenta de paso. non_renseigne=No informado diff --git a/langs/fr_FR/delegation.lang b/langs/fr_FR/delegation.lang index 31ea67a..fbefcaa 100644 --- a/langs/fr_FR/delegation.lang +++ b/langs/fr_FR/delegation.lang @@ -24,12 +24,14 @@ DelegationSupplierInvoiceMissing=Veuillez sélectionner une facture fournisseur. DelegationSupplierInvoiceNotFound=Facture fournisseur introuvable. DelegationSupplierInvoiceNotAllowed=La facture fournisseur n'est pas éligible à la délégation. DelegationSupplierInvoiceAlreadyLinked=Cette facture fournisseur est déjà liée à la délégation. +DelegationSupplierInvoicesSummaryTitle=Récapitulatif des factures fournisseurs en délégation +DelegationTotalsWithCount=Totaux (%s factures) DelegationAmountExceeded=Le total des montants délégués dépasse le montant de la facture. DelegationClearingAccountMissingCountry=Veuillez renseigner le pays de la société avant de créer le compte de passage. non_renseigne=Non renseigné -BtpAdditionalWork=Travaux supplémentaires +BtpAdditionalWork=Avenants BtpAnteCumul=Cumul antérieur -BtpMainWork=Travaux principaux +BtpMainWork=Marché initial BtpNewCumul=Nouveau cumul BtpRayToRest=Reste à payer BtpRetenueGarantie=Retenue de garantie diff --git a/langs/it_IT/delegation.lang b/langs/it_IT/delegation.lang index 72f6abb..9aa961c 100644 --- a/langs/it_IT/delegation.lang +++ b/langs/it_IT/delegation.lang @@ -24,6 +24,8 @@ DelegationSupplierInvoiceMissing=Seleziona una fattura fornitore. DelegationSupplierInvoiceNotFound=Fattura fornitore non trovata. DelegationSupplierInvoiceNotAllowed=La fattura fornitore non è idonea alla delega. DelegationSupplierInvoiceAlreadyLinked=Questa fattura fornitore è già collegata alla delega. +DelegationSupplierInvoicesSummaryTitle=Riepilogo fatture fornitore in delega di pagamento +DelegationTotalsWithCount=Totali (%s fatture) DelegationAmountExceeded=Il totale degli importi delegati supera l'importo della fattura. DelegationClearingAccountMissingCountry=Imposta il paese dell'azienda prima di creare il conto di transito. non_renseigne=Non compilato