CMXX - Translations, Service report improvements and API security
This commit is contained in:
13
api.php
13
api.php
@@ -20,9 +20,9 @@ include './settings/config_redirector.php';
|
||||
// Header security - enabled via config
|
||||
//------------------------------------------
|
||||
if (header_security){
|
||||
header('Content-Type: application/json');
|
||||
|
||||
// Set strict security headers
|
||||
// Strict security headers
|
||||
header('Content-Type: application/json');
|
||||
header('X-Content-Type-Options: nosniff');
|
||||
header('X-Frame-Options: DENY');
|
||||
header('X-XSS-Protection: 1; mode=block');
|
||||
@@ -30,19 +30,22 @@ if (header_security){
|
||||
header('Access-Control-Allow-Origin: ' . $_ENV['ALLOWED_ORIGIN']);
|
||||
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
|
||||
header('Access-Control-Allow-Headers: Content-Type, Accept, Authorization');
|
||||
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
|
||||
header('Referrer-Policy: strict-origin-when-cross-origin');
|
||||
|
||||
// Validate Content-Type
|
||||
if (!str_contains($_SERVER['CONTENT_TYPE'],'application/json')) {
|
||||
if (!str_contains($_SERVER['CONTENT_TYPE'] ?? '', 'application/json')) {
|
||||
http_response_code(400);
|
||||
exit(json_encode(['error' => 'Invalid Content-Type']));
|
||||
}
|
||||
|
||||
// Validate request size
|
||||
if ($_SERVER['CONTENT_LENGTH'] > '5M') {
|
||||
$maxRequestSize = 5 * 1024 * 1024; // 5MB in bytes
|
||||
if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > $maxRequestSize) {
|
||||
http_response_code(413);
|
||||
exit(json_encode(['error' => 'Request too large']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
// Retrieve API version and Collection
|
||||
|
||||
@@ -1318,9 +1318,43 @@ function serviceReport($history, $request, $country_code)
|
||||
$test_fail = $maintenance_test['description'];
|
||||
$maintenance_test = json_decode($maintenance_test['description']);
|
||||
|
||||
function combineAndSortKeys($object) {
|
||||
// Convert object properties to arrays if needed
|
||||
$key1 = (array)($object->doubletestvalues ?? []);
|
||||
$key2 = (array)($object->stringtestvalues ?? []);
|
||||
$key3 = (array)($object->booleantestvalues ?? []);
|
||||
|
||||
// Combine all rows
|
||||
$combined = array_merge($key1, $key2, $key3);
|
||||
|
||||
// Group rows based on the "pass" boolean
|
||||
$grouped = [
|
||||
'failed' => [],
|
||||
'passed' => []
|
||||
];
|
||||
|
||||
foreach ($combined as $row) {
|
||||
// Check if $row is an object and convert if needed
|
||||
if (is_object($row)) {
|
||||
$row = (array)$row;
|
||||
}
|
||||
|
||||
if (isset($row['pass']) && $row['pass'] === true) {
|
||||
$grouped['passed'][] = $row;
|
||||
} else {
|
||||
$grouped['failed'][] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
return $grouped;
|
||||
}
|
||||
|
||||
// Example usage:
|
||||
$sortedTestResults = combineAndSortKeys($maintenance_test);
|
||||
|
||||
//check if maintenance test has false test and update renewal date
|
||||
if (str_contains($test_fail, "false")){
|
||||
$service_renewal_date = $service_report_outcome_attention; ;
|
||||
$service_renewal_date = $service_report_outcome_attention;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1341,6 +1375,10 @@ function serviceReport($history, $request, $country_code)
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
table > thead:first-of-type > tr:last-child {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
.servicereport {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
@@ -1544,7 +1582,15 @@ function serviceReport($history, $request, $country_code)
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="service_summary" class="service_summary">
|
||||
<div class="service_summary__title">'.$summary_label1.'</div>
|
||||
<table width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="service_summary__title">'.$summary_label1.'</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
';
|
||||
|
||||
@@ -1574,9 +1620,22 @@ function serviceReport($history, $request, $country_code)
|
||||
}
|
||||
if ($actions == 0) {$servicereport .= '<li>'.$message1.'</li>';}
|
||||
|
||||
//CLOSE summary table and OPENGROUP_HEADER 8 table
|
||||
$servicereport .= '
|
||||
</ul>
|
||||
<div class="service_summary__title">'.$group_header_8.'</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="service_summary__title">'.$group_header_8.'</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
';
|
||||
if (str_contains($history->description, "service_mandatory_question")) {
|
||||
@@ -1616,7 +1675,15 @@ function serviceReport($history, $request, $country_code)
|
||||
}
|
||||
|
||||
if ($repairs == 0) {$servicereport .= '<li>' . $message2 . '</li>';}
|
||||
$servicereport .='</ul>';
|
||||
|
||||
//CLOSE GROUP_HEADER 8 table
|
||||
$servicereport .='
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>';
|
||||
|
||||
if (str_contains($history->description, "service_mandatory_question")) {
|
||||
//GET NOTES from JSON
|
||||
$notes ='';
|
||||
@@ -1626,12 +1693,24 @@ function serviceReport($history, $request, $country_code)
|
||||
}
|
||||
}
|
||||
|
||||
//GENERATE NOTES SECTION
|
||||
$servicereport .='
|
||||
<div class="service_summary__title">'.$group_header_7.'</div>';
|
||||
<table width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="service_summary__title">'.$group_header_7.'</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>';
|
||||
if ($notes != '') {
|
||||
$servicereport .= '<div id="service_notes" class="service_notes">'.$notes.'</div>';
|
||||
} else {
|
||||
$servicereport .= '<div id="service_notes" class="service_notes">'.$service_report_no_comments.'</div>'; }
|
||||
$servicereport .= '<tr><td id="service_notes" class="service_notes">'.$notes.'</td></tr>';
|
||||
}
|
||||
else {
|
||||
$servicereport .= '<tr><td id="service_notes" class="service_notes">'.$service_report_no_comments.'</td></tr>';
|
||||
}
|
||||
|
||||
$servicereport .='</tbody>
|
||||
</table> ';
|
||||
}
|
||||
$servicereport .= '</div>';
|
||||
|
||||
@@ -1652,82 +1731,28 @@ function serviceReport($history, $request, $country_code)
|
||||
<td class="col-value text-center">'.$service_report_maintenance_test_status.'</td>
|
||||
</tr>
|
||||
</thead>
|
||||
';
|
||||
<tbody>';
|
||||
|
||||
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// Check for measurements ++++++++++++++++++++++++++
|
||||
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// Check if false test found +++++++
|
||||
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
$servicereport .= '<tbody>';
|
||||
|
||||
//Check double test values
|
||||
foreach($maintenance_test->doubletestvalues as $key => $value)
|
||||
//SHOW FAILED VALUES
|
||||
foreach($sortedTestResults['failed'] as $key => $value)
|
||||
{
|
||||
//If test is not passed or not
|
||||
if($value->pass == false){
|
||||
$text = $service_maintenance_test_fail;
|
||||
$style = 'error';
|
||||
}
|
||||
else
|
||||
{
|
||||
$text = $service_maintenance_test_pass;
|
||||
$style = 'success';
|
||||
|
||||
}
|
||||
|
||||
$servicereport .='
|
||||
<tr>
|
||||
<td class="col-key">'.$value->name.'</td>
|
||||
<td class="col-value text-center '.$style.'">'.$text.'</td>
|
||||
<td class="col-key">'.$value['name'].'</td>
|
||||
<td class="col-value text-center error">'.$service_maintenance_test_fail.'</td>
|
||||
</tr>
|
||||
';
|
||||
}
|
||||
//Check string test values
|
||||
foreach($maintenance_test->stringtestvalues as $key => $value)
|
||||
//SHOW PASSED VALUES
|
||||
foreach($sortedTestResults['passed'] as $key => $value)
|
||||
{
|
||||
//If test is not passed or not
|
||||
if($value->pass == false){
|
||||
$text = $service_maintenance_test_fail;
|
||||
$style = 'error';
|
||||
}
|
||||
else
|
||||
{
|
||||
$text = $service_maintenance_test_pass;
|
||||
$style = 'success';
|
||||
|
||||
}
|
||||
$servicereport .='
|
||||
<tr>
|
||||
<td class="col-key">'.$value->name.'</td>
|
||||
<td class="col-value text-center '.$style.'">'.$text.'</td>
|
||||
<td class="col-key">'.$value['name'].'</td>
|
||||
<td class="col-value text-center success">'.$service_maintenance_test_pass.'</td>
|
||||
</tr>
|
||||
';
|
||||
}
|
||||
|
||||
//Check boolean test values
|
||||
foreach($maintenance_test->booleantestvalues as $key => $value)
|
||||
{
|
||||
//If test is not passed or not
|
||||
if($value->pass == false){
|
||||
$text = $service_maintenance_test_fail;
|
||||
$style = 'error';
|
||||
}
|
||||
else
|
||||
{
|
||||
$text = $service_maintenance_test_pass;
|
||||
$style = 'success';
|
||||
}
|
||||
$servicereport .='
|
||||
<tr>
|
||||
<td class="col-key">'.$value->name.'</td>
|
||||
<td class="col-value text-center '.$style.'">'.$text.'</td>
|
||||
</tr>
|
||||
';
|
||||
}
|
||||
|
||||
$servicereport .= '
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -1834,6 +1859,7 @@ function serviceReport($history, $request, $country_code)
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//Legacy Code
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
if (isset($json_array->question25) && isset($json_array->newHistory)) {
|
||||
$servicereport .= '
|
||||
|
||||
|
||||
@@ -162,8 +162,8 @@ $service_report_maintenance_test_status = 'Status';
|
||||
$service_report_outcome_good = 'Gut';
|
||||
$service_report_outcome_attention = 'Achtung';
|
||||
$service_report_no_text = 'Es gibt keine Serviceberichte ';
|
||||
$service_maintenance_test_fail = 'Fehlgeschlagen';
|
||||
$service_maintenance_test_pass = 'Gut';
|
||||
$service_maintenance_test_fail = 'Nicht genehmigt';
|
||||
$service_maintenance_test_pass = 'Genehmigt';
|
||||
$status0 = '0';
|
||||
$status0_text = 'Neu';
|
||||
$status1 = '1';
|
||||
@@ -466,8 +466,8 @@ $contract_ignore_serial = 'Seriennummern ignorieren';
|
||||
$contract_assigned_users = 'Zugewiesene Benutzer';
|
||||
$contract_assigned_users_add = 'Benutzer hinzufügen';
|
||||
$group_header_1 = 'Allgemein';
|
||||
$group_header_2 = 'Kopf - Typ 1';
|
||||
$group_header_3 = 'Kopf - Typ 2';
|
||||
$group_header_2 = 'Type 1 connector';
|
||||
$group_header_3 = 'Type 2 connector';
|
||||
$group_header_4 = 'Batterieeinheit';
|
||||
$group_header_5 = 'Gehäuse';
|
||||
$group_header_6 = 'Aktionen';
|
||||
@@ -500,7 +500,6 @@ $service_visual_12 = 'Zustand des Kunststoffgehäuses';
|
||||
$service_visual_13 = 'Batteriefach vorhanden?';
|
||||
$service_visual_14 = 'Korrosion an Batterieanschlüssen?';
|
||||
$service_visual_15 = 'Batterieanschlüsse vorhanden?';
|
||||
$service_visual_15 = 'Batterieanschlüsse vorhanden?';
|
||||
$service_visual_16 = 'Seriennummer lesbar?';
|
||||
$service_visual_17 = 'USB-Anschluss sauber?';
|
||||
$service_visual_18 = 'Bewegung am USB-Anschluss?';
|
||||
@@ -663,9 +662,86 @@ $buildreport_onstock_text = 'Gesamtanzahl auf Lager';
|
||||
$data_build_sfg_view = 'In den letzten 7 Tagen produzierte Halbfertigprodukte';
|
||||
$data_build_fg_view = 'In den letzten 7 Tagen produzierte Fertigprodukte';
|
||||
$menu_translations = 'Übersetzungen';
|
||||
$button_create_rma = 'RMA erstellen';
|
||||
$rmas_h2 = 'Rücksendematerial';
|
||||
$rmas_p = 'Anzeigen, verwalten und suchen von RMA-Details';
|
||||
$rma_h2 = 'Rücksendematerialanforderung';
|
||||
$message_rma_1 = 'RMA erfolgreich erstellt!';
|
||||
$message_rma_2 = 'RMA erfolgreich aktualisiert!';
|
||||
$message_rma_3 = 'RMA erfolgreich gelöscht!';
|
||||
$message_no_rma = 'Es gibt kein RMA';
|
||||
$rma_search = 'RMA suchen...';
|
||||
$rma_rowID = 'Anforderungsnummer';
|
||||
$rma_status = 'Status';
|
||||
$rma_status0_text = 'Neu';
|
||||
$rma_status1_text = 'In Bearbeitung';
|
||||
$rma_status2_text = 'Genehmigt';
|
||||
$rma_status3_text = 'Abgeschlossen';
|
||||
$rma_status4_text = 'Abgebrochen';
|
||||
$rma_sw_version_latest = 'Neueste Softwareversion';
|
||||
$rma_servicereport_latest = 'Servicebericht der letzten 7 Tage erstellt';
|
||||
$rma_information = 'RMA-Informationen';
|
||||
$rma_return_reason = 'Rücksendegrund';
|
||||
$rma_return_reason0_text = '';
|
||||
$rma_return_reason1_text = '';
|
||||
$rma_return_reason2_text = '';
|
||||
$rma_return_reason3_text = '';
|
||||
$rma_return_reason4_text = '';
|
||||
$rma_return_reasons_notes = 'Rücksendegrundnotizen';
|
||||
$rma_return_tab1 = 'Rücksendegrund';
|
||||
$rma_return_tab2 = 'Fragen';
|
||||
$rma_question_allowed_label1 = 'Ja';
|
||||
$rma_question_allowed_label2 = 'Nein';
|
||||
$rma_question_header_1 = '';
|
||||
$rma_question_1 = 'Funktionieren die Batterien?';
|
||||
$rma_question_2 = 'Funktioniert der Knopf richtig?';
|
||||
$rma_question_3 = '';
|
||||
$rma_question_4 = '';
|
||||
$rma_question_5 = '';
|
||||
$rma_question_6 = '';
|
||||
$rma_question_7 = '';
|
||||
$menu_rmas = 'Rücksendematerial';
|
||||
$button_create_text_variable = 'Variable erstellen';
|
||||
$message_no_text_variables = 'Es gibt keine Variablen';
|
||||
$text_variables_h2 = 'Übersetzungen';
|
||||
$text_variable_name = 'Variablenname';
|
||||
$text_variable_translation_languagekey = 'Sprache';
|
||||
$text_variable_translation_translation = 'Übersetzung';
|
||||
$menu_products_attributes = 'Produktattribute';
|
||||
$message_patt_1 = 'Produktattribut erfolgreich erstellt!';
|
||||
$message_patt_2 = 'Produktattribut erfolgreich aktualisiert!';
|
||||
$message_patt_3 = 'Produktattribut erfolgreich gelöscht!';
|
||||
$products_attributes_h2 = 'Produktattribute';
|
||||
$products_attributes_p = 'Anzeigen, verwalten und suchen von Produktattributen';
|
||||
$button_create_products_attribute = 'Attribut erstellen';
|
||||
$products_attribute_search = 'Attribut suchen';
|
||||
$products_attribute_rowID = 'Attribut-ID';
|
||||
$products_attribute_group_name = 'Name';
|
||||
$message_no_products_attributes = 'Es gibt keine Attribute';
|
||||
$products_attribute_group_status = 'Status';
|
||||
$products_attribute_group_type = 'Typ';
|
||||
$general_status_0 = 'Inaktiv';
|
||||
$general_status_1 = 'Aktiv';
|
||||
$products_attributes_group_status = 'Status';
|
||||
$products_attributes_group_name = 'Name der Gruppe';
|
||||
$general_form_0 = 'Auswahlfeld';
|
||||
$general_form_1 = 'Kontrollkästchen';
|
||||
$general_form_2 = 'Dropdown-Liste';
|
||||
$products_attributes_group_mandatory = 'Pflicht';
|
||||
$products_attributes_group_items = 'Elemente in der Gruppe';
|
||||
$products_attributes_item_rowID = 'Artikel-ID';
|
||||
$products_attributes_item_status = 'Status';
|
||||
$products_attributes_item_name = 'Artikelname';
|
||||
$products_attributes_item_quantity = 'Artikelanzahl';
|
||||
$products_attributes_item_position = 'Artikelposition';
|
||||
$products_attributes_item_media = 'Artikelmedien';
|
||||
$product_name_1 = 'Testproduktübersetzung';
|
||||
$menu_pricelists = 'Preislisten';
|
||||
$menu_media = 'Medien';
|
||||
$general_currency_1 = ' $';
|
||||
$general_currency_0 = ' €';
|
||||
$general_modifier_0 = '-';
|
||||
$general_modifier_1 = '+';
|
||||
$menu_catalog = 'Katalog';
|
||||
$menu_sales_orders = 'Bestellungen';
|
||||
$menu_identity = 'Identität';
|
||||
|
||||
@@ -162,8 +162,8 @@ $service_report_maintenance_test_status = 'Estado';
|
||||
$service_report_outcome_good = 'Bueno';
|
||||
$service_report_outcome_attention = 'Atención';
|
||||
$service_report_no_text = 'No hay informes de servicio';
|
||||
$service_maintenance_test_fail = 'falló';
|
||||
$service_maintenance_test_pass = 'bueno';
|
||||
$service_maintenance_test_fail = 'No aprobado';
|
||||
$service_maintenance_test_pass = 'Aprobado';
|
||||
$status0 = '0';
|
||||
$status0_text = 'Nuevo';
|
||||
$status1 = '1';
|
||||
@@ -466,8 +466,8 @@ $contract_ignore_serial = 'Ignorar números de serie';
|
||||
$contract_assigned_users = 'Usuarios asignados';
|
||||
$contract_assigned_users_add = 'Agregar usuario';
|
||||
$group_header_1 = 'General';
|
||||
$group_header_2 = 'Cabeza - Tipo 1';
|
||||
$group_header_3 = 'Cabeza - Tipo 2';
|
||||
$group_header_2 = 'Type 1 connector';
|
||||
$group_header_3 = 'Type 2 connector';
|
||||
$group_header_4 = 'Unidad de batería';
|
||||
$group_header_5 = 'Carcasa';
|
||||
$group_header_6 = 'Acciones';
|
||||
@@ -500,7 +500,6 @@ $service_visual_12 = 'Estado de la carcasa de plástico';
|
||||
$service_visual_13 = '¿Cubierta de batería disponible?';
|
||||
$service_visual_14 = '¿Corrosión en los contactos de la batería?';
|
||||
$service_visual_15 = '¿Número de serie legible?';
|
||||
$service_visual_15 = '¿Número de serie legible?';
|
||||
$service_visual_16 = '¿Conector USB limpio?';
|
||||
$service_visual_17 = '¿Movimiento en el conector USB?';
|
||||
$service_visual_18 = '¿Tornillos fijos (5x)?';
|
||||
@@ -669,9 +668,86 @@ $buildreport_onstock_text = 'Número total En stock';
|
||||
$data_build_sfg_view = 'semiacabado producido en los últimos 7 días';
|
||||
$data_build_fg_view = 'producto acabado producido en los últimos 7 días';
|
||||
$menu_translations = 'Traducciones';
|
||||
$button_create_rma = 'Crear RMA';
|
||||
$rmas_h2 = 'Material de devolución';
|
||||
$rmas_p = 'Ver, gestionar y buscar detalles de RMA';
|
||||
$rma_h2 = 'Solicitud de material de devolución';
|
||||
$message_rma_1 = '¡RMA creado con éxito!';
|
||||
$message_rma_2 = '¡RMA actualizado con éxito!';
|
||||
$message_rma_3 = '¡RMA eliminado con éxito!';
|
||||
$message_no_rma = 'No hay RMA';
|
||||
$rma_search = 'Buscar RMA...';
|
||||
$rma_rowID = 'Número de solicitud';
|
||||
$rma_status = 'Estado';
|
||||
$rma_status0_text = 'Nuevo';
|
||||
$rma_status1_text = 'En progreso';
|
||||
$rma_status2_text = 'Aprobado';
|
||||
$rma_status3_text = 'Completado';
|
||||
$rma_status4_text = 'Cancelado';
|
||||
$rma_sw_version_latest = 'Última versión de software';
|
||||
$rma_servicereport_latest = 'Informe de servicio creado en los últimos 7 días';
|
||||
$rma_information = 'Información del RMA';
|
||||
$rma_return_reason = 'Motivo de devolución';
|
||||
$rma_return_reason0_text = '';
|
||||
$rma_return_reason1_text = '';
|
||||
$rma_return_reason2_text = '';
|
||||
$rma_return_reason3_text = '';
|
||||
$rma_return_reason4_text = '';
|
||||
$rma_return_reasons_notes = 'Notas sobre el motivo de devolución';
|
||||
$rma_return_tab1 = 'Motivo de devolución';
|
||||
$rma_return_tab2 = 'Preguntas';
|
||||
$rma_question_allowed_label1 = 'Sí';
|
||||
$rma_question_allowed_label2 = 'No';
|
||||
$rma_question_header_1 = '';
|
||||
$rma_question_1 = '¿Funcionan las baterías?';
|
||||
$rma_question_2 = '¿Funciona correctamente el botón?';
|
||||
$rma_question_3 = '';
|
||||
$rma_question_4 = '';
|
||||
$rma_question_5 = '';
|
||||
$rma_question_6 = '';
|
||||
$rma_question_7 = '';
|
||||
$menu_rmas = 'Material de devolución';
|
||||
$button_create_text_variable = 'Crear variable';
|
||||
$message_no_text_variables = 'No hay variables';
|
||||
$text_variables_h2 = 'Traducciones';
|
||||
$text_variable_name = 'Nombre de la variable';
|
||||
$text_variable_translation_languagekey = 'Idioma';
|
||||
$text_variable_translation_translation = 'Traducción';
|
||||
$menu_products_attributes = 'Atributos de producto';
|
||||
$message_patt_1 = '¡Atributo de producto creado con éxito!';
|
||||
$message_patt_2 = '¡Atributo de producto actualizado con éxito!';
|
||||
$message_patt_3 = '¡Atributo de producto eliminado con éxito!';
|
||||
$products_attributes_h2 = 'Atributos de producto';
|
||||
$products_attributes_p = 'Ver, gestionar y buscar atributos de producto';
|
||||
$button_create_products_attribute = 'Crear atributo';
|
||||
$products_attribute_search = 'Buscar atributo';
|
||||
$products_attribute_rowID = 'ID del atributo';
|
||||
$products_attribute_group_name = 'Nombre';
|
||||
$message_no_products_attributes = 'No hay atributos';
|
||||
$products_attribute_group_status = 'Estado';
|
||||
$products_attribute_group_type = 'Tipo';
|
||||
$general_status_0 = 'Inactivo';
|
||||
$general_status_1 = 'Activo';
|
||||
$products_attributes_group_status = 'Estado';
|
||||
$products_attributes_group_name = 'Nombre del grupo';
|
||||
$general_form_0 = 'Botón de opción';
|
||||
$general_form_1 = 'Casilla de verificación';
|
||||
$general_form_2 = 'Lista desplegable';
|
||||
$products_attributes_group_mandatory = 'Obligatorio';
|
||||
$products_attributes_group_items = 'Elementos en el grupo';
|
||||
$products_attributes_item_rowID = 'ID del artículo';
|
||||
$products_attributes_item_status = 'Estado';
|
||||
$products_attributes_item_name = 'Nombre del artículo';
|
||||
$products_attributes_item_quantity = 'Cantidad de artículos';
|
||||
$products_attributes_item_position = 'Posición del artículo';
|
||||
$products_attributes_item_media = 'Medios del artículo';
|
||||
$product_name_1 = 'Traducción del producto de prueba';
|
||||
$menu_pricelists = 'Listas de precios';
|
||||
$menu_media = 'Medios';
|
||||
$general_currency_1 = ' $';
|
||||
$general_currency_0 = ' €';
|
||||
$general_modifier_0 = '-';
|
||||
$general_modifier_1 = '+';
|
||||
$menu_catalog = 'Catálogo';
|
||||
$menu_sales_orders = 'Pedidos';
|
||||
$menu_identity = 'Identidad';
|
||||
|
||||
@@ -162,8 +162,8 @@ $service_report_maintenance_test_status = 'Status';
|
||||
$service_report_outcome_good = 'Goed';
|
||||
$service_report_outcome_attention = 'Attentie';
|
||||
$service_report_no_text = 'Geen service rapporten ';
|
||||
$service_maintenance_test_fail = 'Afgekeurd';
|
||||
$service_maintenance_test_pass = 'Goed';
|
||||
$service_maintenance_test_fail = 'Niet goedgekeurd';
|
||||
$service_maintenance_test_pass = 'Goedgekeurd';
|
||||
$status0 = '0';
|
||||
$status0_text = 'Nieuw';
|
||||
$status1 = '1';
|
||||
@@ -466,8 +466,8 @@ $contract_ignore_serial = 'Negeer serienummers';
|
||||
$contract_assigned_users = 'Gekoppelde gebruikers';
|
||||
$contract_assigned_users_add = 'Gebruiker toevoegen';
|
||||
$group_header_1 = 'Algemeen';
|
||||
$group_header_2 = 'Kop - Type 1';
|
||||
$group_header_3 = 'Kop - Type 2';
|
||||
$group_header_2 = 'Type 1 connector';
|
||||
$group_header_3 = 'Type 2 connector';
|
||||
$group_header_4 = 'Batterij';
|
||||
$group_header_5 = 'Behuizing';
|
||||
$group_header_6 = 'Acties';
|
||||
@@ -500,7 +500,6 @@ $service_visual_12 = 'Staat van de behuizing';
|
||||
$service_visual_13 = 'Batterijklep aanwezig?';
|
||||
$service_visual_14 = 'Corrosie op de batterij contacten?';
|
||||
$service_visual_15 = 'Serienummer leesbaar?';
|
||||
$service_visual_15 = 'Serienummer leesbaar?';
|
||||
$service_visual_16 = 'USB poort schoon?';
|
||||
$service_visual_17 = 'Beweging op de USB poort?';
|
||||
$service_visual_18 = 'All schroeven vast (5x)?';
|
||||
@@ -669,13 +668,86 @@ $buildreport_onstock_text = 'Totaal aantal Voorraad';
|
||||
$data_build_sfg_view = 'half-fabrikaat geproduceerd in de laatste 7 dagen';
|
||||
$data_build_fg_view = 'Kompleet produkt geproduceerd in de laatste 7 dagen';
|
||||
$menu_translations = 'Vertalingen';
|
||||
$button_create_rma = 'Maak RMA';
|
||||
$rmas_h2 = 'Retourmateriaal';
|
||||
$rmas_p = 'Bekijk, beheer en zoek RMA-gegevens.';
|
||||
$rma_h2 = 'Retourmateriaalverzoek';
|
||||
$message_rma_1 = 'RMA succesvol aangemaakt!';
|
||||
$message_rma_2 = 'RMA succesvol bijgewerkt!';
|
||||
$message_rma_3 = 'RMA succesvol verwijderd!';
|
||||
$message_no_rma = 'Er is geen RMA';
|
||||
$rma_search = 'Zoek RMA...';
|
||||
$rma_rowID = 'Verzoeknummer';
|
||||
$rma_status = 'Status';
|
||||
$rma_status0_text = 'Nieuw';
|
||||
$rma_status1_text = 'In uitvoering';
|
||||
$rma_status2_text = 'Goedgekeurd';
|
||||
$rma_status3_text = 'Voltooid';
|
||||
$rma_status4_text = 'Geannuleerd';
|
||||
$rma_sw_version_latest = 'Laatste softwareversie';
|
||||
$rma_servicereport_latest = 'Servicebericht gemaakt in de laatste 7 dagen';
|
||||
$rma_information = 'RMA informatie';
|
||||
$rma_return_reason = 'Retourreden';
|
||||
$rma_return_reason0_text = '';
|
||||
$rma_return_reason1_text = '';
|
||||
$rma_return_reason2_text = '';
|
||||
$rma_return_reason3_text = '';
|
||||
$rma_return_reason4_text = '';
|
||||
$rma_return_reasons_notes = 'Aantekeningen retourreden';
|
||||
$rma_return_tab1 = 'Retourreden';
|
||||
$rma_return_tab2 = 'Vragen';
|
||||
$rma_question_allowed_label1 = 'Ja';
|
||||
$rma_question_allowed_label2 = 'Nee';
|
||||
$rma_question_header_1 = '';
|
||||
$rma_question_1 = 'Werken de batterijen?';
|
||||
$rma_question_2 = 'Werkt de knop correct?';
|
||||
$rma_question_3 = '';
|
||||
$rma_question_4 = '';
|
||||
$rma_question_5 = '';
|
||||
$rma_question_6 = '';
|
||||
$rma_question_7 = '';
|
||||
$menu_rmas = 'Retourmateriaal';
|
||||
$button_create_text_variable = 'Maak variabele';
|
||||
$message_no_text_variables = 'Er zijn geen variabelen';
|
||||
$text_variables_h2 = 'Vertalingen';
|
||||
$text_variable_name = 'Naam van de variabele';
|
||||
$text_variable_translation_languagekey = 'Taal';
|
||||
$text_variable_translation_translation = 'Vertaling';
|
||||
$menu_products_attributes = 'Produkt attributen';
|
||||
$menu_products_attributes = 'Productattributen';
|
||||
$message_patt_1 = 'Productattribuut succesvol aangemaakt!';
|
||||
$message_patt_2 = 'Productattribuut succesvol bijgewerkt!';
|
||||
$message_patt_3 = 'Productattribuut succesvol verwijderd!';
|
||||
$products_attributes_h2 = 'Productattributen';
|
||||
$products_attributes_p = 'Bekijk, beheer en zoek productattributen';
|
||||
$button_create_products_attribute = 'Maak attribuut';
|
||||
$products_attribute_search = 'Zoek attribuut';
|
||||
$products_attribute_rowID = 'Attribuut ID';
|
||||
$products_attribute_group_name = 'Naam';
|
||||
$message_no_products_attributes = 'Er zijn geen attributen';
|
||||
$products_attribute_group_status = 'Status';
|
||||
$products_attribute_group_type = 'Type';
|
||||
$general_status_0 = 'Inactief';
|
||||
$general_status_1 = 'Actief';
|
||||
$products_attributes_group_status = 'Status';
|
||||
$products_attributes_group_name = 'Naam van de groep';
|
||||
$general_form_0 = 'Keuzerondje';
|
||||
$general_form_1 = 'Checkbox';
|
||||
$general_form_2 = 'Keuzelijst';
|
||||
$products_attributes_group_mandatory = 'Verplicht';
|
||||
$products_attributes_group_items = 'Items in groep';
|
||||
$products_attributes_item_rowID = 'Item ID';
|
||||
$products_attributes_item_status = 'Status';
|
||||
$products_attributes_item_name = 'Item naam';
|
||||
$products_attributes_item_quantity = 'Aantal items';
|
||||
$products_attributes_item_position = 'Positie van item';
|
||||
$products_attributes_item_media = 'Item media';
|
||||
$product_name_1 = 'Vertaling van testproduct';
|
||||
$menu_pricelists = 'Prijslijsten';
|
||||
$menu_media = 'Media';
|
||||
$general_currency_1 = ' $';
|
||||
$general_currency_0 = ' €';
|
||||
$general_modifier_0 = '-';
|
||||
$general_modifier_1 = '+';
|
||||
$h2_brand_name_1 = 'MorvalWatches';
|
||||
$h2_brand_name_2 = 'een merk met een verhaal';
|
||||
$h2_brand_visit = 'Onze collectie';
|
||||
|
||||
@@ -162,8 +162,8 @@ $service_report_maintenance_test_status = 'Status';
|
||||
$service_report_outcome_good = 'Bom';
|
||||
$service_report_outcome_attention = 'Atenção';
|
||||
$service_report_no_text = 'Não há relatórios de serviço';
|
||||
$service_maintenance_test_fail = 'falhou';
|
||||
$service_maintenance_test_pass = 'bom';
|
||||
$service_maintenance_test_fail = 'Não aprovado';
|
||||
$service_maintenance_test_pass = 'Aprovado';
|
||||
$status0 = '0';
|
||||
$status0_text = 'Novo';
|
||||
$status1 = '1';
|
||||
@@ -466,8 +466,8 @@ $contract_ignore_serial = 'Ignorar números de série';
|
||||
$contract_assigned_users = 'Usuários atribuídos';
|
||||
$contract_assigned_users_add = 'Adicionar usuário';
|
||||
$group_header_1 = 'Geral';
|
||||
$group_header_2 = 'Cabeça - Tipo 1';
|
||||
$group_header_3 = 'Cabeça - Tipo 2';
|
||||
$group_header_2 = 'Type 1 connector';
|
||||
$group_header_3 = 'Type 2 connector';
|
||||
$group_header_4 = 'Unidade de bateria';
|
||||
$group_header_5 = 'Carcaça';
|
||||
$group_header_6 = 'Ações';
|
||||
@@ -500,7 +500,6 @@ $service_visual_12 = 'Estado da carcaça de plástico';
|
||||
$service_visual_13 = 'Cobertura da bateria disponível?';
|
||||
$service_visual_14 = 'Corrosão nos contatos da bateria?';
|
||||
$service_visual_15 = 'Número de série legível?';
|
||||
$service_visual_15 = 'Número de série legível?';
|
||||
$service_visual_16 = 'Conector USB limpo?';
|
||||
$service_visual_17 = 'Movimento no conector USB?';
|
||||
$service_visual_18 = 'Parafusos fixos (5x)?';
|
||||
@@ -669,9 +668,86 @@ $buildreport_onstock_text = 'Número total Em estoque';
|
||||
$data_build_sfg_view = 'semi-acabado produzido nos últimos 7 dias';
|
||||
$data_build_fg_view = 'produto acabado produzido nos últimos 7 dias';
|
||||
$menu_translations = 'Traduções';
|
||||
$button_create_rma = 'Criar RMA';
|
||||
$rmas_h2 = 'Material de devolução';
|
||||
$rmas_p = 'Visualizar, gerenciar e buscar detalhes do RMA';
|
||||
$rma_h2 = 'Solicitação de material de devolução';
|
||||
$message_rma_1 = 'RMA criada com sucesso!';
|
||||
$message_rma_2 = 'RMA atualizada com sucesso!';
|
||||
$message_rma_3 = 'RMA excluída com sucesso!';
|
||||
$message_no_rma = 'Não há RMA';
|
||||
$rma_search = 'Procurar RMA...';
|
||||
$rma_rowID = 'Número de solicitação';
|
||||
$rma_status = 'Status';
|
||||
$rma_status0_text = 'Novo';
|
||||
$rma_status1_text = 'Em progresso';
|
||||
$rma_status2_text = 'Aprovado';
|
||||
$rma_status3_text = 'Concluído';
|
||||
$rma_status4_text = 'Cancelado';
|
||||
$rma_sw_version_latest = 'Última versão do software';
|
||||
$rma_servicereport_latest = 'Relatório de serviço criado nos últimos 7 dias';
|
||||
$rma_information = 'Informações do RMA';
|
||||
$rma_return_reason = 'Motivo de devolução';
|
||||
$rma_return_reason0_text = '';
|
||||
$rma_return_reason1_text = '';
|
||||
$rma_return_reason2_text = '';
|
||||
$rma_return_reason3_text = '';
|
||||
$rma_return_reason4_text = '';
|
||||
$rma_return_reasons_notes = 'Notas sobre o motivo de devolução';
|
||||
$rma_return_tab1 = 'Motivo de devolução';
|
||||
$rma_return_tab2 = 'Perguntas';
|
||||
$rma_question_allowed_label1 = 'Sim';
|
||||
$rma_question_allowed_label2 = 'Não';
|
||||
$rma_question_header_1 = '';
|
||||
$rma_question_1 = 'As baterias estão funcionando?';
|
||||
$rma_question_2 = 'O botão está funcionando corretamente?';
|
||||
$rma_question_3 = '';
|
||||
$rma_question_4 = '';
|
||||
$rma_question_5 = '';
|
||||
$rma_question_6 = '';
|
||||
$rma_question_7 = '';
|
||||
$menu_rmas = 'Material de devolução';
|
||||
$button_create_text_variable = 'Criar variável';
|
||||
$message_no_text_variables = 'Não há variáveis';
|
||||
$text_variables_h2 = 'Traduções';
|
||||
$text_variable_name = 'Nome da variável';
|
||||
$text_variable_translation_languagekey = 'Idioma';
|
||||
$text_variable_translation_translation = 'Tradução';
|
||||
$menu_products_attributes = 'Atributos de produto';
|
||||
$message_patt_1 = 'Atributo de produto criado com sucesso!';
|
||||
$message_patt_2 = 'Atributo de produto atualizado com sucesso!';
|
||||
$message_patt_3 = 'Atributo de produto excluído com sucesso!';
|
||||
$products_attributes_h2 = 'Atributos de produto';
|
||||
$products_attributes_p = 'Visualizar, gerenciar e buscar atributos';
|
||||
$button_create_products_attribute = 'Criar atributo';
|
||||
$products_attribute_search = 'Procurar atributo';
|
||||
$products_attribute_rowID = 'ID do atributo';
|
||||
$products_attribute_group_name = 'Nome';
|
||||
$message_no_products_attributes = 'Não há atributos';
|
||||
$products_attribute_group_status = 'Status';
|
||||
$products_attribute_group_type = 'Tipo';
|
||||
$general_status_0 = 'Inativo';
|
||||
$general_status_1 = 'Ativo';
|
||||
$products_attributes_group_status = 'Status';
|
||||
$products_attributes_group_name = 'Nome do grupo';
|
||||
$general_form_0 = 'Botão de opção';
|
||||
$general_form_1 = 'Caixa de seleção';
|
||||
$general_form_2 = 'Lista suspensa';
|
||||
$products_attributes_group_mandatory = 'Obrigatório';
|
||||
$products_attributes_group_items = 'Itens no grupo';
|
||||
$products_attributes_item_rowID = 'ID do item';
|
||||
$products_attributes_item_status = 'Status';
|
||||
$products_attributes_item_name = 'Nome do item';
|
||||
$products_attributes_item_quantity = 'Quantidade do item';
|
||||
$products_attributes_item_position = 'Posição do item';
|
||||
$products_attributes_item_media = 'Mídia do item';
|
||||
$product_name_1 = 'Tradução do produto de teste';
|
||||
$menu_pricelists = 'Listas de preços';
|
||||
$menu_media = 'Mídia';
|
||||
$general_currency_1 = ' $';
|
||||
$general_currency_0 = ' €';
|
||||
$general_modifier_0 = '-';
|
||||
$general_modifier_1 = '+';
|
||||
$menu_catalog = 'Catálogo';
|
||||
$menu_sales_orders = 'Pedidos';
|
||||
$menu_identity = 'Identidade';
|
||||
|
||||
@@ -162,8 +162,8 @@ $service_report_maintenance_test_status = 'Status';
|
||||
$service_report_outcome_good = 'Good';
|
||||
$service_report_outcome_attention = 'Attention';
|
||||
$service_report_no_text = 'There are no service reports ';
|
||||
$service_maintenance_test_fail = 'fail';
|
||||
$service_maintenance_test_pass = 'good';
|
||||
$service_maintenance_test_fail = 'Not approved';
|
||||
$service_maintenance_test_pass = 'Approved';
|
||||
$status0 = '0';
|
||||
$status0_text = 'New';
|
||||
$status1 = '1';
|
||||
@@ -466,8 +466,8 @@ $contract_ignore_serial = 'Ignore serialnumbers';
|
||||
$contract_assigned_users = 'Assigned users';
|
||||
$contract_assigned_users_add = 'Add user';
|
||||
$group_header_1 = 'General';
|
||||
$group_header_2 = 'Head - Type 1';
|
||||
$group_header_3 = 'Head - Type 2';
|
||||
$group_header_2 = 'Type 1 connector';
|
||||
$group_header_3 = 'Type 2 connector';
|
||||
$group_header_4 = 'Battery unit';
|
||||
$group_header_5 = 'Casing';
|
||||
$group_header_6 = 'Actions';
|
||||
@@ -499,7 +499,6 @@ $service_visual_11 = 'Corrosion visible on pins?';
|
||||
$service_visual_12 = 'State of plastic housing';
|
||||
$service_visual_13 = 'Battery cover available?';
|
||||
$service_visual_14 = 'Corrosion on battery contacts?';
|
||||
$service_visual_15 = 'Battery contacts available?';
|
||||
$service_visual_15 = 'Serialnumber readable?';
|
||||
$service_visual_16 = 'USB connector clean?';
|
||||
$service_visual_17 = 'Movement on USB connector?';
|
||||
|
||||
Reference in New Issue
Block a user