43if (empty($object) || !is_object($object)) {
44 print
"Error, template page can't be called as URL";
49global $forceall, $senderissupplier, $inputalsopricewithtax, $outputalsopricetotalwithtax;
52if (isModEnabled(
'margin') && !empty($object->element) && in_array($object->element, array(
'facture',
'facturerec',
'propal',
'commande'))) {
56if (empty($dateSelector)) {
59if (empty($forceall)) {
62if (empty($senderissupplier)) {
63 $senderissupplier = 0;
65if (empty($inputalsopricewithtax)) {
66 $inputalsopricewithtax = 0;
68if (empty($outputalsopricetotalwithtax)) {
69 $outputalsopricetotalwithtax = 0;
73$domData =
' data-element="'.$line->element.
'"';
74$domData .=
' data-id="'.$line->id.
'"';
75$domData .=
' data-qty="'.$line->qty.
'"';
76$domData .=
' data-product_type="'.$line->product_type.
'"';
79if (!empty($conf->global->INVOICE_POSITIVE_CREDIT_NOTE_SCREEN) && in_array($object->element, array(
'facture',
'invoice_supplier')) && $object->type == $object::TYPE_CREDIT_NOTE) {
86<!-- BEGIN PHP TEMPLATE objectline_view.tpl.php -->
87<tr
id=
"row-<?php print $line->id?>" class=
"drag drop oddeven" <?php print $domData; ?> >
88<?php
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { ?>
89 <td
class=
"linecolnum center"><span
class=
"opacitymedium"><?php $coldisplay++; ?><?php print ($i + 1); ?></span></td>
91 <td
class=
"linecoldescription minwidth300imp"><?php $coldisplay++; ?><div
id=
"line_<?php print $line->id; ?>"></div>
93if (($line->info_bits & 2) == 2) {
94 print
'<a href="'.DOL_URL_ROOT.
'/comm/remx.php?id='.$this->socid.
'">';
96 print
img_object($langs->trans(
"ShowReduc"),
'reduc').
' ';
97 if ($line->description ==
'(DEPOSIT)') {
98 $txt = $langs->trans(
"Deposit");
99 } elseif ($line->description ==
'(EXCESS RECEIVED)') {
100 $txt = $langs->trans(
"ExcessReceived");
101 } elseif ($line->description ==
'(EXCESS PAID)') {
102 $txt = $langs->trans(
"ExcessPaid");
107 if ($line->description) {
108 if ($line->description ==
'(CREDIT_NOTE)' && $line->fk_remise_except > 0) {
109 include_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
111 $discount->fetch($line->fk_remise_except);
112 print ($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromCreditNote", $discount->getNomUrl(0));
113 } elseif ($line->description ==
'(DEPOSIT)' && $line->fk_remise_except > 0) {
114 include_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
116 $discount->fetch($line->fk_remise_except);
117 print ($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromDeposit", $discount->getNomUrl(0));
119 if (!empty($conf->global->INVOICE_ADD_DEPOSIT_DATE)) {
120 print
' ('.dol_print_date($discount->datec).
')';
122 } elseif ($line->description ==
'(EXCESS RECEIVED)' && $objp->fk_remise_except > 0) {
123 include_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
125 $discount->fetch($line->fk_remise_except);
126 print ($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromExcessReceived", $discount->getNomUrl(0));
127 } elseif ($line->description ==
'(EXCESS PAID)' && $objp->fk_remise_except > 0) {
128 include_once DOL_DOCUMENT_ROOT.
'/core/class/discount.class.php';
130 $discount->fetch($line->fk_remise_except);
131 print ($txt ?
' - ' :
'').$langs->transnoentities(
"DiscountFromExcessPaid", $discount->getNomUrl(0));
137 $format = (!empty($conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE) ?
'dayhour' :
'day');
139 if ($line->fk_product > 0) {
140 print $form->textwithtooltip($text, $description, 3, 0,
'', $i, 0, (!empty($line->fk_parent_line) ?
img_picto(
'',
'rightarrow') :
''));
142 $type = (!empty($line->product_type) ? $line->product_type : $line->fk_product_type);
144 $text =
img_object($langs->trans(
'Service'),
'service');
146 $text =
img_object($langs->trans(
'Product'),
'product');
149 if (!empty($line->label)) {
150 $text .=
' <strong>'.$line->label.
'</strong>';
151 print $form->textwithtooltip($text,
dol_htmlentitiesbr($line->description), 3, 0,
'', $i, 0, (!empty($line->fk_parent_line) ?
img_picto(
'',
'rightarrow') :
''));
153 if (!empty($line->fk_parent_line)) {
156 if (preg_match(
'/^\(DEPOSIT\)/', $line->description)) {
157 $newdesc = preg_replace(
'/^\(DEPOSIT\)/', $langs->trans(
"Deposit"), $line->description);
166 if ($line->element ==
'facturedetrec' || $line->element ==
'invoice_supplier_det_rec') {
168 $line->date_start_fill = $line->date_start;
169 $line->date_end_fill = $line->date_end;
171 if ($line->date_start_fill || $line->date_end_fill) {
172 print
'<div class="clearboth nowraponall daterangeofline-facturedetrec">';
174 if ($line->date_start_fill) {
175 print
'<span class="opacitymedium" title="'.dol_escape_htmltag($langs->trans(
"AutoFillDateFrom")).
'">'.$langs->trans(
'AutoFillDateFromShort').
':</span> '.
yn($line->date_start_fill);
177 if ($line->date_start_fill && $line->date_end_fill) {
180 if ($line->date_end_fill) {
181 print
'<span class="opacitymedium" title="'.dol_escape_htmltag($langs->trans(
"AutoFillDateTo")).
'">'.$langs->trans(
'AutoFillDateToShort').
':</span> '.
yn($line->date_end_fill);
183 if ($line->date_start_fill || $line->date_end_fill) {
187 if ($line->date_start || $line->date_end) {
188 print
'<div class="clearboth nowraponall opacitymedium daterangeofline">'.get_date_range($line->date_start, $line->date_end, $format).
'</div>';
191 if (!$line->date_start || !$line->date_end) {
194 if ($object->element ==
'propal' || $object->element ==
'order' || $object->element ==
'facture' || $object->element ==
'propal_supplier' || $object->element ==
'supplier_proposal' || $object->element ==
'commande') {
195 $res = $line->fetch_product();
197 if ($line->product->isService() && $line->product->isMandatoryPeriod()) {
198 print
'<div><span class="clearboth nowraponall warning">'.$langs->trans(
"mandatoryPeriodNeedTobeSet").
'</span></div>';
205 if (basename($_SERVER[
"PHP_SELF"]) ==
'card-rec.php') {
206 $default_start_fill =
getDolGlobalInt(
'INVOICEREC_SET_AUTOFILL_DATE_START');
207 $default_end_fill =
getDolGlobalInt(
'INVOICEREC_SET_AUTOFILL_DATE_END');
208 print
'<div class="clearboth nowraponall daterangeofline-facturedetrec">';
209 print
'<span class="opacitymedium" title="'.dol_escape_htmltag($langs->trans(
"AutoFillDateFrom")).
'">'.$langs->trans(
'AutoFillDateFromShort').
':</span> '.
yn($default_start_fill);
211 print
'<span class="opacitymedium" title="'.dol_escape_htmltag($langs->trans(
"AutoFillDateTo")).
'">'.$langs->trans(
'AutoFillDateToShort').
':</span> '.
yn($default_end_fill);
217 if ($line->fk_product > 0 &&
getDolGlobalInt(
'PRODUIT_DESC_IN_FORM_ACCORDING_TO_DEVICE')) {
218 if ($line->element ==
'facturedetrec') {
219 print (!empty($line->description) && $line->description != $line->product_label) ? (($line->date_start_fill || $line->date_end_fill) ?
'' :
'<br>').
'<br>'.
dol_htmlentitiesbr($line->
description) :
'';
220 } elseif ($line->element ==
'invoice_supplier_det_rec') {
221 print (!empty($line->description) && $line->description != $line->label) ? (($line->date_start || $line->date_end) ?
'' :
'<br>').
'<br>'.
dol_htmlentitiesbr($line->
description) :
'';
223 print (!empty($line->description) && $line->description != $line->product_label) ? (($line->date_start || $line->date_end) ?
'' :
'<br>').
'<br>'.
dol_htmlentitiesbr($line->
description) :
'';
228 if (!empty($extrafields)) {
229 $temps = $line->showOptionals($extrafields,
'view', array(),
'',
'', 1,
'line');
230 if (!empty($temps)) {
231 print
'<div style="padding-top: 10px" id="extrafield_lines_area_'.$line->id.
'" name="extrafield_lines_area_'.$line->id.
'">';
238if ($user->hasRight(
'fournisseur',
'lire') && isset($line->fk_fournprice) && $line->fk_fournprice > 0 && empty($conf->global->SUPPLIER_HIDE_SUPPLIER_OBJECTLINES)) {
239 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
241 $productfourn->fetch_product_fournisseur_price($line->fk_fournprice);
242 print
'<div class="clearboth"></div>';
243 print
'<span class="opacitymedium">'.$langs->trans(
'Supplier').
' : </span>'.$productfourn->getSocNomUrl(1,
'supplier').
' - <span class="opacitymedium">'.$langs->trans(
'Ref').
' : </span>';
245 if ($user->hasRight(
'produit',
'creer') || $user->hasRight(
'service',
'creer')) {
246 print $productfourn->getNomUrl();
248 print $productfourn->ref_supplier;
252if (isModEnabled(
'accounting') && !empty($line->fk_accounting_account) && $line->fk_accounting_account > 0) {
254 $accountingaccount->fetch($line->fk_accounting_account);
255 print
'<div class="clearboth"></div><br><span class="opacitymedium">'.$langs->trans(
'AccountingAffectation').
' : </span>'.$accountingaccount->getNomUrl(0, 1, 1);
260if ($object->element ==
'supplier_proposal' || $object->element ==
'order_supplier' || $object->element ==
'invoice_supplier' || $object->element ==
'invoice_supplier_rec') {
261 print
'<td class="linecolrefsupplier">';
262 print ($line->ref_fourn ? $line->ref_fourn : $line->ref_supplier);
267$tooltiponpriceend =
'';
268if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
269 $tooltiponprice = $langs->transcountry(
"TotalHT", $mysoc->country_code).
'='.
price($line->total_ht);
270 $tooltiponprice .=
'<br>'.$langs->transcountry(
"TotalVAT", ($senderissupplier ? $object->thirdparty->country_code : $mysoc->country_code)).
'='.
price($line->total_tva);
271 if (is_object($object->thirdparty)) {
272 if ($senderissupplier) {
273 $seller = $object->thirdparty;
277 $buyer = $object->thirdparty;
280 if ($mysoc->useLocalTax(1)) {
281 if (($seller->country_code == $buyer->country_code) || $line->total_localtax1 || $seller->useLocalTax(1)) {
282 $tooltiponprice .=
'<br>'.$langs->transcountry(
"TotalLT1", $seller->country_code).
'='.
price($line->total_localtax1);
284 $tooltiponprice .=
'<br>'.$langs->transcountry(
"TotalLT1", $seller->country_code).
'=<span class="opacitymedium">'.$langs->trans($senderissupplier ?
"NotUsedForThisVendor" :
"NotUsedForThisCustomer").
'</span>';
287 if ($mysoc->useLocalTax(2)) {
288 if (( isset($seller->country_code) && isset($buyer->thirdparty->country_code) && $seller->country_code == $buyer->thirdparty->country_code) || $line->total_localtax2 || $seller->useLocalTax(2)) {
289 $tooltiponprice .=
'<br>'.$langs->transcountry(
"TotalLT2", $seller->country_code).
'='.
price($line->total_localtax2);
291 $tooltiponprice .=
'<br>'.$langs->transcountry(
"TotalLT2", $seller->country_code).
'=<span class="opacitymedium">'.$langs->trans($senderissupplier ?
"NotUsedForThisVendor" :
"NotUsedForThisCustomer").
'</span>';
295 $tooltiponprice .=
'<br>'.$langs->transcountry(
"TotalTTC", $mysoc->country_code).
'='.
price($line->total_ttc);
297 $tooltiponprice =
'<span class="classfortooltip" title="'.dol_escape_htmltag($tooltiponprice).
'">';
298 $tooltiponpriceend =
'</span>';
302print
'<td class="linecolvat nowrap right">';
306 $positiverates .= ($positiverates ?
'/' :
'').
price2num($line->tva_tx);
309 $positiverates .= ($positiverates ?
'/' :
'').
price2num($line->localtax1_tx);
312 $positiverates .= ($positiverates ?
'/' :
'').
price2num($line->localtax2_tx);
314if (empty($positiverates)) {
315 $positiverates =
'0';
317print $tooltiponprice;
318print
vatrate($positiverates.($line->vat_src_code ?
' ('.$line->vat_src_code.
')' :
''),
'%', $line->info_bits);
319print $tooltiponpriceend;
322 <td
class=
"linecoluht nowraponall right"><?php $coldisplay++; ?><?php print
price($sign * $line->subprice); ?></td>
324<?php
if (isModEnabled(
"multicurrency") && $this->multicurrency_code != $conf->currency) { ?>
325 <td
class=
"linecoluht_currency nowraponall right"><?php $coldisplay++; ?><?php print
price($sign * $line->multicurrency_subprice); ?></td>
328if (!empty($inputalsopricewithtax) && !
getDolGlobalInt(
'MAIN_NO_INPUT_PRICE_WITH_TAX')) { ?>
329 <td
class=
"linecoluttc nowraponall right"><?php $coldisplay++; ?><?php
330 $upinctax = isset($line->pu_ttc) ? $line->pu_ttc :
null;
332 $upinctax =
price2num($line->total_ttc / $line->qty,
'MU');
334 print (isset($upinctax) ?
price($sign * $upinctax) :
price($sign * $line->subprice));
338 <td
class=
"linecolqty nowraponall right"><?php $coldisplay++; ?>
340if ((($line->info_bits & 2) != 2) && $line->special_code != 3) {
345 print
price($line->qty, 0,
'', 0, 0);
351if (!empty($conf->global->PRODUCT_USE_UNITS)) {
352 print
'<td class="linecoluseunit nowrap left">';
353 $label = $line->getLabelOfUnit(
'short');
355 print $langs->trans($label);
359if (!empty($line->remise_percent) && $line->special_code != 3) {
360 print
'<td class="linecoldiscount right">';
362 include_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
366 print
'<td class="linecoldiscount"> </td>';
371if (isset($this->situation_cycle_ref) && $this->situation_cycle_ref) {
372 include_once DOL_DOCUMENT_ROOT.
'/core/lib/price.lib.php';
374 print
'<td class="linecolcycleref nowrap right">'.$line->situation_percent.
'%</td>';
376 $locataxes_array =
getLocalTaxesFromRate($line->tva.($line->vat_src_code ?
' ('.$line->vat_src_code.
')' :
''), 0, ($senderissupplier ? $mysoc : $object->thirdparty), ($senderissupplier ? $object->thirdparty : $mysoc));
377 $tmp =
calcul_price_total($line->qty, $line->pu, $line->remise_percent, $line->txtva, -1, -1, 0,
'HT', $line->info_bits, $line->type, ($senderissupplier ? $object->thirdparty : $mysoc), $locataxes_array, 100, $object->multicurrency_tx, $line->multicurrency_subprice);
378 print
'<td align="right" class="linecolcycleref2 nowrap">'.price($sign * $tmp[0]).
'</td>';
381if ($usemargins && isModEnabled(
'margin') && empty($user->socid)) {
382 if (!empty($user->rights->margins->creer)) { ?>
383 <td
class=
"linecolmargin1 nowrap margininfos right"><?php $coldisplay++; ?><?php print
price($line->pa_ht); ?></td>
385 if (!empty($conf->global->DISPLAY_MARGIN_RATES) && $user->rights->margins->liretous) { ?>
386 <td
class=
"linecolmargin2 nowrap margininfos right"><?php $coldisplay++; ?><?php print (($line->pa_ht == 0) ?
'n/a' :
price(
price2num($line->marge_tx,
'MT')).
'%'); ?></td>
388 if (!empty($conf->global->DISPLAY_MARK_RATES) && $user->rights->margins->liretous) {?>
389 <td
class=
"linecolmargin2 nowrap margininfos right"><?php $coldisplay++; ?><?php print
price(
price2num($line->marque_tx,
'MT')).
'%'; ?></td>
394if ($line->special_code == 3) { ?>
395 <td
class=
"linecoloption nowrap right"><?php $coldisplay++; ?><?php print $langs->trans(
'Option'); ?></td>
397 print
'<td class="linecolht nowrap right">';
399 print $tooltiponprice;
400 print
price($sign * $line->total_ht);
401 print $tooltiponpriceend;
403 if (isModEnabled(
"multicurrency") && $this->multicurrency_code != $conf->currency) {
404 print
'<td class="linecolutotalht_currency nowrap right">'.price($sign * $line->multicurrency_total_ht).
'</td>';
410if ($outputalsopricetotalwithtax) {
411 print
'<td class="linecolht nowrap right">'.price($sign * $line->total_ttc).
'</td>';
415if ($this->
statut == 0 && !empty($object_rights->creer) && $action !=
'selectlines') {
416 $situationinvoicelinewithparent = 0;
417 if (isset($line->fk_prev_id) && in_array($object->element, array(
'facture',
'facturedet'))) {
418 if ($object->type == $object::TYPE_SITUATION) {
420 $situationinvoicelinewithparent = 1;
425 if (isModEnabled(
'asset') && $object->element ==
'invoice_supplier') {
426 print
'<td class="linecolasset center">';
428 if (!empty($product_static->accountancy_code_buy) ||
429 !empty($product_static->accountancy_code_buy_intra) ||
430 !empty($product_static->accountancy_code_buy_export)
432 $accountancy_category_asset = $conf->global->ASSET_ACCOUNTANCY_CATEGORY;
434 if (!empty($product_static->accountancy_code_buy)) $filters[] =
"account_number = '" . $this->db->escape($product_static->accountancy_code_buy) .
"'";
435 if (!empty($product_static->accountancy_code_buy_intra)) $filters[] =
"account_number = '" . $this->db->escape($product_static->accountancy_code_buy_intra) .
"'";
436 if (!empty($product_static->accountancy_code_buy_export)) $filters[] =
"account_number = '" . $this->db->escape($product_static->accountancy_code_buy_export) .
"'";
437 $sql =
"SELECT COUNT(*) AS found";
438 $sql .=
" FROM " . MAIN_DB_PREFIX .
"accounting_account";
439 $sql .=
" WHERE pcg_type = '" . $this->db->escape($conf->global->ASSET_ACCOUNTANCY_CATEGORY) .
"'";
440 $sql .=
" AND (" . implode(
' OR ', $filters).
")";
441 $resql_asset = $this->db->query($sql);
443 print
'Error SQL: ' . $this->db->lasterror();
444 } elseif ($obj = $this->db->fetch_object($resql_asset)) {
445 if (!empty($obj->found)) {
446 print
'<a class="reposition" href="' . DOL_URL_ROOT .
'/asset/card.php?action=create&token='.newToken().
'&supplier_invoice_id='.$object->id.
'">';
455 print
'<td class="linecoledit center">';
457 if (($line->info_bits & 2) == 2 || !empty($disableedit)) {
459 <a
class=
"editfielda reposition" href=
"<?php print $_SERVER["PHP_SELF
"].'?id='.$this->id.'&action=editline&token='.newToken().'&lineid='.$line->id; ?>">
465 print
'<td class="linecoldelete center">';
467 if (!$situationinvoicelinewithparent && empty($disableremove)) {
468 print
'<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$this->
id.
'&action=ask_deleteline&token='.newToken().
'&lineid='.$line->id.
'">';
475 if ($num > 1 && $conf->browser->layout !=
'phone' && ((property_exists($this,
'situation_counter') && $this->situation_counter == 1) || empty($this->situation_cycle_ref)) && empty($disablemove)) {
476 print
'<td class="linecolmove tdlineupdown center">';
479 <a
class=
"lineupdown" href=
"<?php print $_SERVER["PHP_SELF
"].'?id='.$this->id.'&action=up&token='.newToken().'&rowid='.$line->id; ?>">
480 <?php print
img_up(
'default', 0,
'imgupforline'); ?>
483 if ($i < $num - 1) { ?>
484 <a
class=
"lineupdown" href=
"<?php print $_SERVER["PHP_SELF
"].'?id='.$this->id.'&action=down&token='.newToken().'&rowid='.$line->id; ?>">
485 <?php print
img_down(
'default', 0,
'imgdownforline'); ?>
490 print
'<td '.(($conf->browser->layout !=
'phone' && empty($disablemove)) ?
' class="linecolmove tdlineupdown center"' :
' class="linecolmove center"').
'></td>';
494 print
'<td colspan="3"></td>';
495 $coldisplay = $coldisplay + 3;
498if ($action ==
'selectlines') { ?>
499 <td
class=
"linecolcheck center"><input
type=
"checkbox" class=
"linecheckbox" name=
"line_checkbox[<?php print $i + 1; ?>]" value=
"<?php print $line->id; ?>" ></td>
504print
"<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
Class to manage accounting accounts.
Class to manage absolute discounts.
Class to manage predefined suppliers products.
const TYPE_PRODUCT
Regular product.
print $langs trans("Ref").' m m m statut
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as description
Only used if Module[ID]Desc translation string is not found.
dol_print_reduction($reduction, $langs)
Returns formated reduction.
vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0, $html=0)
Return a string with VAT rate label formated for view output Used into pdf and HTML pages.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
img_down($titlealt='default', $selected=0, $moreclass='')
Show down arrow logo.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
getLocalTaxesFromRate($vatrate, $local, $buyer, $seller, $firstparamisid=0)
Get type and rate of localtaxes for a particular vat rate/country of a thirdparty.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
img_edit_add($titlealt='default', $other='')
Show logo +.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
img_up($titlealt='default', $selected=0, $moreclass='')
Show top arrow logo.
calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocaltax1_rate, $uselocaltax2_rate, $remise_percent_global, $price_base_type, $info_bits, $type, $seller='', $localtaxes_array='', $progress=100, $multicurrency_tx=1, $pu_devise=0, $multicurrency_code='')
Calculate totals (net, vat, ...) of a line.
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
$conf db name
Only used if Module[ID]Name translation string is not found.