POWERED BY

Value Network

Information about the Value Network instance of Odoo, the Open Source ERP.

Installed Applications

Sales
From quotations to invoices
Invoicing
Invoices & Payments
CRM
Track leads and close opportunities
Website
Enterprise website builder
Project
Organize and plan your projects
eCommerce
Sell your products online
Email Marketing
Design, send and track emails
Expenses
Submit, validate and reinvoice employee expenses
Recruitment
Track your recruitment pipeline
Employees
Centralize employee information
eLearning
Manage and publish an eLearning platform
Events
Publish events, sell tickets
Discuss
Chat, mail gateway and private channels
Contacts
Centralize your address book
Calendar
Schedule employees' meetings
Surveys
Send your surveys or share them live.
Attendances
Track employee attendance
To-Do
Organize your work with memos and to-do lists
Skills Management
Manage skills, knowledge and resume of your employees
Lunch
Handle lunch orders of your employees
Online Jobs
Manage your online hiring process

Installed Localizations / Account Charts

Belgium - Accounting
// // This file is meant to regroup your javascript code. You can either copy/past // any code that should be executed on each page loading or write your own // taking advantage of the Odoo framework to create new behaviors or modify // existing ones. For example, doing this will greet any visitor with a 'Hello, // world !' message in a popup: // /* odoo.define('website.user_custom_code', function (require) { 'use strict'; var Dialog = require('web.Dialog'); var publicWidget = require('web.public.widget'); publicWidget.registry.HelloWorldPopup = publicWidget.Widget.extend({ selector: '#wrapwrap', start: function () { Dialog.alert(this, "Hello, world!"); return this._super.apply(this, arguments); }, }) }); */ /*javascript for job form application */ const input = document.getElementById('recruitment1'); const input2 = document.getElementById('recruitment2'); const input3 = document.getElementById('recruitment3'); const input4 = document.getElementById('oq0n5e284u') const input5 = document.getElementById('s4mwapgldsi') let inputs = [input, input2,input4,input5]; inputs.forEach((input, i) => { if (input) { input.addEventListener('input', function() { try { if (input.checkValidity()) { input.classList.add('is-valid'); input.classList.remove('is-invalid'); input.parentElement.nextElementSibling.style.display = 'block'; } else { input.classList.add('is-invalid'); input.classList.remove('is-valid'); input.parentElement.nextElementSibling.style.display = 'none'; } } catch (error) { console.error('Recruitment error:', error); } }); } // else { // console.log("Input element " + i + "is null"); // } }); /*------------hiding fields if the position is the open one-------------------*/ try { var jobNameElement = document.querySelector('.nameOfJob'); if (jobNameElement) { var jobName = jobNameElement.textContent.toLowerCase(); console.log(jobName); var keywordToHide = 'open'; var hideFields = false; if (jobName.includes(keywordToHide)) { hideFields = true; } var toHideFields = document.querySelectorAll('.toHide'); var toShowFields = document.querySelectorAll('.Showfield'); var resume = document.querySelector("[name='Resume']"); var toKeep = document.querySelector(".toKeep"); var requiredMark = toKeep.querySelector('div label span:nth-child(2)'); // console.log("the resume element", resume); // console.log('the resquired mark of the resume field', requiredMark); for (var i = 0; i < toHideFields.length; i++) { //if it's the open position if (hideFields) { toHideFields[i].style.display = 'none'; //make all the hided elements optional toHideFields[i].querySelectorAll('[required]').forEach(function (element) { element.removeAttribute('required'); }); //show new fields that are just for the open position for (const field of toShowFields){ field.style.display = 'block'; console.log("showing fields") // set the state of the fields as optional field.querySelectorAll('[required]').forEach(function (elt){ elt.setAttribute('required','1'); }); } //set resume as optional resume.removeAttribute('required') requiredMark.style.display = 'none'; } else { toHideFields[i].style.display = 'block'; for (const field of toShowFields){ field.style.display = 'none'; // set the state of the fields of the open position as optional field.querySelectorAll('[required]').forEach(function (elt){ elt.removeAttribute('required'); }); } //set back resume as required resume.setAttribute('required','1'); requiredMark.style.display = 'block'; } } } // else { // console.log('.nameOfJob element not found'); // } } catch (error) { console.error('Hiding fields for Open position error:', error); } /* REST api to get countries code*/ const selectCountries = document.getElementById('country-codes'); if (selectCountries) { // Make a request to the API endpoint fetch('https://restcountries.com/v3.1/all') .then(response => response.json()) .then(data => { // Extract the country codes from the response const countryCodes = data.map(country => country.cca2); // Add the country codes to the selectCountries element countryCodes.forEach(code => { const option = document.createElement('option'); option.value = code; option.text = code; selectCountries.appendChild(option); }); }) .catch(error => console.log(error)); } // Function to show the selected page content and hide others function showPage(page) { try { var pageContents = document.getElementsByClassName("page-content"); var navLinks = document.getElementsByClassName("nav-link"); for (var i = 0; i < pageContents.length; i++) { if (i === page - 1) { pageContents[i].style.display = "block"; navLinks[i].classList.add("active"); } else { pageContents[i].style.display = "none"; navLinks[i].classList.remove("active"); } } } catch (error) { console.error('showPage error:', error); } } //search bar for the job-------------------------------------------------------- // making sure that the code is executed before the dom is loaded. /*document.addEventListener('DOMContentLoaded', function() { function searchWithinPage() { var searchQuery = document.querySelector('.oe_search_box'); if (!searchQuery) { console.error('Search input element not found'); return; } var searchValue = searchQuery.value.toLowerCase().trim(); var elementsToSearch = document.getElementsByClassName('searchingArea'); for (var i = 0; i < elementsToSearch.length; i++) { var content = elementsToSearch[i].textContent.toLowerCase(); if (searchValue === '') { elementsToSearch[i].classList.remove('highlight'); } else { if (content.includes(searchValue)) { elementsToSearch[i].classList.add('highlight'); } else { elementsToSearch[i].classList.remove('highlight'); } } } } var searchBox = document.querySelector('.oe_search_box'); if (searchBox) { searchBox.addEventListener('input', function() { if (this.value.trim() === '') { var highlightedElements = document.querySelectorAll('.highlight'); highlightedElements.forEach(function(element) { element.classList.remove('highlight'); }); } }); } else { console.error('Search input element not found'); } });*/ // newsletter reset ------------------------------------------------------------- // Get the email input element and the subscribe button element const emailInput = document.querySelector('.js_subscribe_email'); const subscribeButton = document.querySelector('.js_subscribe_btn'); // const thanksButton = document.querySelector('.js_subscribed_btn'); const thanksButton = document.querySelector('.btn-success'); // try { // if (emailInput && subscribeButton && thanksButton) { // console.log('1') // window.addEventListener('load', function() { // console.log('2') // emailInput.value = ''; // subscribeButton.style.display = 'inline-block'; // thanksButton.style.display = 'none'; // }); // } // } // catch (error) { // console.log('3') // console.error('Window addEventListener error:', error); // } // try{ // let email = emailInput.value.trim(); // console.log("this is the email",email); // const handelInput(e){ // const emailvalue = e.target.value ; // console.log("email value", emailvalue); // } // emailInput.addEventListener("change", handelInput); // }catch(e){ // console.log("we can't find the email or its value") // } // // Add event listener to the subscribe button // if (subscribeButton) { // console.log('4') // console.log("this is subscribeButton",subscribeButton); // console.log("this is thanksButton",thanksButton); // try { // console.log('5') // const handelSubmit = (e)=>{ // e.preventDefault(); // Prevent the default form submission // console.log('5.1') // // Get the entered email // // Validate the email (you can add your own email validation logic here) // if (email !== '') { // console.log('6') // // Hide the subscribe button and show the thanks message // subscribeButton.style.display = 'none'; // thanksButton.style.display = 'inline-block'; // // Reset the input field after 3 seconds // console.log('111') // subscribeButton.removeEventListener('click', handelSubmit); // console.log('222') // setTimeout(function() { // console.log('6.1') // subscribeButton.style.display = 'inline-block'; // console.log('6.2') // thanksButton.style.display = 'none'; // emailInput.value = ''; // emailInput.innerText = ''; // window.location.reload(); // }, 3000); // // return; // } // } // subscribeButton.addEventListener('click', handelSubmit); // } // catch (error) { // console.log('7') // console.error('subscribeButton error:', error); // } // } // console.log('8') // console.log("Subscribed email: " + localStorage.getItem('subscribedEmail')); // this code is for newsletter confirmation on mobile function showThankYouMessage() { alert("Thank you for submitting the form!"); }