์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ
Odoo ๋ฉ”๋‰ด
  • ๋กœ๊ทธ์ธ
  • ๋ฌด๋ฃŒ ์ฒดํ—˜ํ•˜๊ธฐ
  • ์•ฑ
    ์žฌ๋ฌด ๊ด€๋ฆฌ
    • ํšŒ๊ณ„
    • ์ฒญ๊ตฌ์„œ ๊ด€๋ฆฌ
    • ๋น„์šฉ ๊ด€๋ฆฌ
    • ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ (BI)
    • ๋ฌธ์„œ
    • ์ „์ž ์„œ๋ช…
    ํŒ๋งค
    • CRM
    • ํŒ๋งค
    • POS ์Šคํ† ์–ด
    • POS ๋ ˆ์Šคํ† ๋ž‘
    • ๊ตฌ๋…
    • ๋ Œํƒˆ
    ์›น์‚ฌ์ดํŠธ
    • ์›น์‚ฌ์ดํŠธ ๋นŒ๋”
    • ์ด์ปค๋จธ์Šค
    • ๋ธ”๋กœ๊ทธ
    • ํฌ๋Ÿผ
    • ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…
    • ์˜จ๋ผ์ธ ํ•™์Šต ๊ด€๋ฆฌ
    ๊ณต๊ธ‰๋ง
    • ์žฌ๊ณ  ๊ด€๋ฆฌ
    • ์ œ์กฐ ๊ด€๋ฆฌ
    • ์ œํ’ˆ ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ (PLM)
    • ๋งค์ž…
    • ์œ ์ง€๊ด€๋ฆฌ
    • ํ’ˆ์งˆ
    ์ธ์ ์ž์› ๊ด€๋ฆฌ
    • ์ง์›
    • ์ฑ„์šฉ
    • ํœด๊ฐ€ ๊ด€๋ฆฌ
    • ์ธ์‚ฌ ํ‰๊ฐ€
    • ์ธ์žฌ ์ถ”์ฒœ
    • ์ฐจ๋Ÿ‰ ๊ด€๋ฆฌ
    ๋งˆ์ผ€ํŒ…
    • ์†Œ์…œ ๋งˆ์ผ€ํŒ…
    • ์ด๋ฉ”์ผ ๋งˆ์ผ€ํŒ…
    • SMS ๋งˆ์ผ€ํŒ…
    • ํ–‰์‚ฌ
    • ๋งˆ์ผ€ํŒ… ์ž๋™ํ™”
    • ์„ค๋ฌธ ์กฐ์‚ฌ
    ์„œ๋น„์Šค
    • ํ”„๋กœ์ ํŠธ
    • ์ž‘์—… ๊ธฐ๋ก
    • ํ˜„์žฅ ์„œ๋น„์Šค
    • ํ—ฌํ”„๋ฐ์Šคํฌ
    • ์ผ์ • ๊ด€๋ฆฌ
    • ์ผ์ • ์˜ˆ์•ฝ
    ์ƒ์‚ฐ์„ฑ
    • ๋ฉ”์ผ ๋ฐ ์ฑ„ํŒ…
    • ์ „์ž ๊ฒฐ์žฌ
    • IoT
    • VoIP
    • ์ง€์‹ ์„ผํ„ฐ
    • WhatsApp
    ํƒ€์‚ฌ ์•ฑ Odoo ์ŠคํŠœ๋””์˜ค Odoo ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ
  • ์ธ๋”์ŠคํŠธ๋ฆฌ
    ๋ฆฌํ…Œ์ผ
    • ์„œ์ 
    • ์˜๋ฅ˜ ๋งค์žฅ
    • ๊ฐ€๊ตฌ์ 
    • ์‹๋ฃŒํ’ˆ์ 
    • ์ฒ ๋ฌผ์ 
    • ์žฅ๋‚œ๊ฐ ๊ฐ€๊ฒŒ
    ์‹์Œ๋ฃŒ & ์ˆ™๋ฐ•์—…
    • ๋ฐ” & ํŽ
    • ๋ ˆ์Šคํ† ๋ž‘
    • ํŒจ์ŠคํŠธํ‘ธ๋“œ
    • ๊ฒŒ์ŠคํŠธ ํ•˜์šฐ์Šค
    • ์Œ๋ฃŒ ์œ ํ†ต์—…์ฒด
    • ํ˜ธํ…”
    ๋ถ€๋™์‚ฐ
    • ๋ถ€๋™์‚ฐ ์ค‘๊ฐœ์—…์ฒด
    • ๊ฑด์ถ• ํšŒ์‚ฌ
    • ๊ฑด์„ค
    • ๋ถ€๋™์‚ฐ ๊ด€๋ฆฌ
    • ๊ฐ€๋“œ๋‹
    • ๋ถ€๋™์‚ฐ ์†Œ์œ ์ž ํ˜‘ํšŒ
    ์ปจ์„คํŒ…
    • ํšŒ๊ณ„ ๋ฒ•์ธ
    • Odoo ํŒŒํŠธ๋„ˆ
    • ๋งˆ์ผ€ํŒ… ๋Œ€ํ–‰์‚ฌ
    • ๋ฒ•๋ฅ  ์‚ฌ๋ฌด์†Œ
    • ์ธ์žฌ ์˜์ž…
    • ๊ฐ์‚ฌ ๋ฐ ์ธ์ฆ
    ์ œ์กฐ ๊ด€๋ฆฌ
    • ํ…์Šคํƒ€์ผ
    • ๋ฉ”ํƒˆ
    • ๊ฐ€๊ตฌ
    • ํ‘ธ๋“œ
    • ์–‘์กฐ์žฅ
    • ๊ธฐ์—…์šฉ ์„ ๋ฌผ
    ๊ฑด๊ฐ• & ํ”ผํŠธ๋‹ˆ์Šค
    • ์Šคํฌ์ธ  ํด๋Ÿฝ
    • ์•ˆ๊ฒฝ์ 
    • ํ”ผํŠธ๋‹ˆ์Šค ์„ผํ„ฐ
    • ์›ฐ๋‹ˆ์Šค ์ „๋ฌธ๊ฐ€
    • ์•ฝ๊ตญ
    • ๋ฏธ์šฉ์‹ค
    ์‚ฌ์—…
    • ํ•ธ๋””๋งจ
    • IT ํ•˜๋“œ์›จ์–ด ๋ฐ ์ง€์› ์„œ๋น„์Šค
    • ํƒœ์–‘ ์—๋„ˆ์ง€ ์‹œ์Šคํ…œ
    • ์ œํ™”์—…์ฒด
    • ํด๋ฆฌ๋‹ ์„œ๋น„์Šค
    • HVAC ์„œ๋น„์Šค
    ๊ธฐํƒ€
    • ๋น„์˜๋ฆฌ ๋‹จ์ฒด
    • ํ™˜๊ฒฝ ์—์ด์ „์‹œ
    • ๊ด‘๊ณ ํŒ ์ž„๋Œ€
    • ์‚ฌ์ง„
    • ์ž์ „๊ฑฐ ์ž„๋Œ€
    • ์†Œํ”„ํŠธ์›จ์–ด ๋ฆฌ์…€๋Ÿฌ
    ์ „์ฒด ์ธ๋”์ŠคํŠธ๋ฆฌ ์ฐพ์•„๋ณด๊ธฐ
  • ์ปค๋ฎค๋‹ˆํ‹ฐ
    ํ•™์Šต
    • ํŠœํ† ๋ฆฌ์–ผ
    • ๋ฌธ์„œ
    • ์ธ์ฆ
    • ํ›ˆ๋ จ
    • ๋ธ”๋กœ๊ทธ
    • ํŒŸ์บ์ŠคํŠธ
    ๊ต์œก ์—ญ๋Ÿ‰ ๊ฐ•ํ™”
    • ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
    • Scale-Up! ๊ฒฝ์˜๊ด€๋ฆฌ ๊ฒŒ์ž„
    • Odoo์— ๋ฐฉ๋ฌธํ•ด๋ณด์„ธ์š”
    ์†Œํ”„ํŠธ์›จ์–ด ์‹ ์ฒญ
    • ๋‹ค์šด๋กœ๋“œ
    • ๋ฒ„์ „ ์‚ดํŽด๋ณด๊ธฐ
    • ๋ฆด๋ฆฌ์ฆˆ ๋‚ด์—ญ
    ํ˜‘์—…
    • Github
    • ํฌ๋Ÿผ
    • ํ–‰์‚ฌ
    • ๋ฒˆ์—ญ
    • ํŒŒํŠธ๋„ˆ ๋“ฑ๋ก
    • ํŒŒํŠธ๋„ˆ ๋Œ€์ƒ ์„œ๋น„์Šค
    • ํšŒ๊ณ„ ๋ฒ•์ธ ์ •๋ณด ๋“ฑ๋ก
    ์„œ๋น„์Šค ์‹ ์ฒญ
    • ํŒŒํŠธ๋„ˆ ๊ฒ€์ƒ‰
    • ํšŒ๊ณ„์‚ฌ ๊ฒ€์ƒ‰
    • ์ „๋ฌธ ์ƒ๋‹ด ์˜ˆ์•ฝ
    • ๊ตฌํ˜„ ์„œ๋น„์Šค
    • ๊ณ ๊ฐ ์ •๋ณด
    • ๊ณ ๊ฐ ์ง€์›
    • ์—…๊ทธ๋ ˆ์ด๋“œ
    Github ์œ ํŠœ๋ธŒ ํŠธ์œ„ํ„ฐ ๋งํฌ๋“œ์ธ ์ธ์Šคํƒ€๊ทธ๋žจ ํŽ˜์ด์Šค๋ถ ์Šคํฌํ‹ฐํŒŒ์ด
    +1 (650) 691-3277
    ๋ฐ๋ชจ ์˜ˆ์•ฝํ•˜๊ธฐ
  • ์š”๊ธˆ์ œ
  • ๊ณ ๊ฐ ์ง€์›

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • ํšŒ๊ณ„
  • ์žฌ๊ณ  ๊ด€๋ฆฌ
  • PoS
  • ํ”„๋กœ์ ํŠธ
  • MRP
All apps
์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜๋ ค๋ฉด ํšŒ์› ๊ฐ€์ž…์„ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๋ชจ๋“  ๊ฒŒ์‹œ๋ฌผ ์‚ฌ์šฉ์ž ๋ฐฐ์ง€
ํƒœ๊ทธ (๋ชจ๋‘ ๋ณด๊ธฐ)
odoo accounting v14 pos v15
๊ฒŒ์‹œํŒ ์ •๋ณด
์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜๋ ค๋ฉด ํšŒ์› ๊ฐ€์ž…์„ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๋ชจ๋“  ๊ฒŒ์‹œ๋ฌผ ์‚ฌ์šฉ์ž ๋ฐฐ์ง€
ํƒœ๊ทธ (๋ชจ๋‘ ๋ณด๊ธฐ)
odoo accounting v14 pos v15
๊ฒŒ์‹œํŒ ์ •๋ณด
๋„์›€๋ง

OWL Component Not Rendering in Custom Layout (Odoo 18) โ€” Likely XML Template Issue

๊ตฌ๋…

์ด ๊ฒŒ์‹œ๋ฌผ์— ํ™œ๋™์ด ์žˆ์œผ๋ฉด ์•Œ๋ฆผ ๋ฐ›๊ธฐ

์‹ ๊ณ ๋œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค
javascriptdevelopmentprojectdebug
1 ํšŒ์‹ 
4269 ํ™”๋ฉด
์•„๋ฐ”ํƒ€
Kvrolito

๐Ÿ”ง OWL Component Not Rendering in Custom Layout (Odoo 18) โ€” Likely XML Template Issue

Hello everyone,

I'm currently working on Odoo 18 and trying to render a simple OWL component inside a custom dashboard layout. Despite successfully loading all related JS files, the component does not appear in the UI, and I suspect the issue lies in how the XML template is handled.

๐Ÿ“ Project Structure

My layout is defined in:

my_module/static/src/views/dashboard_page_layout.xml

My JS files are located in:

my_module/static/src/js/

๐Ÿ“ฆ Files

HelloBox.js

/** @odoo-module **/

import { Component, xml } from '@odoo/owl';

export class HelloBox extends Component {}

HelloBox.template = xml`
  <div class="hello-box">
    <h1><t t-esc="props.title"/></h1>
    <button t-on-click="sayHello">Click me</button>
  </div>
`;

HelloBox.props = {
  title: { type: String },
};

HelloBox.prototype.sayHello = function () {
  alert('Hello from OWL!');
};

HelloBox.xml

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
  <t t-name="my_module.HelloBox" owl="1">
    <div class="p-3">
      <p><t t-out="props.title"/></p>
      <button>Click me</button>
    </div>
  </t>
</templates>

init_owl.js

/** @odoo-module **/

import { mount, whenReady } from '@odoo/owl';
import { HelloBox } from './HelloBox';

whenReady(() => {
  const root = document.getElementById('hello-box-root');
  console.log('Mounting HelloBox in:', root);

  if (root) {
    mount(HelloBox, {
      target: root,
      props: { title: 'Witaj z OWL!' },
    });
  }
});

In my dashboard_page_layout.xml, I manually placed:

<div id="hello-box-root"></div>

๐Ÿงฉ Problem Focus

โœ… The JS loads successfully, console.log confirms the mount target exists, and the component code is correct.

โŒ The XML template seems to be the weak point โ€” I suspect it may not be loaded or registered correctly, despite being included in the assets.

In some cases I even get:

TypeError: Cannot read properties of undefined (reading 'defaultProps')

Which usually indicates OWL is trying to mount an incomplete or undefined component โ€” possibly due to the XML template not being properly compiled or injected.

๐Ÿ“œ __manifest__.py

'assets': {
    'web.assets_frontend': [
        'my_module/static/src/js/HelloBox.xml',
        'my_module/static/src/js/HelloBox.js',
        'my_module/static/src/js/init_owl.js',
    ],
},

I've also tried adding the XML to web.assets_qweb, web.assets_backend, and changing the load order, but the issue remains.

๐Ÿ™ What I'm Looking For

  • How should XML templates be properly registered in OWL/Odoo 18 when working with web.assets_frontend?
  • Do I need to explicitly register or reference them in a different way?
  • Is there anything missing to make this work with t-name="my_module.HelloBox"?
  • Is using xml\template`` inside the JS file the preferred approach instead?

Any guidance would be highly appreciated.

Thanks in advance for your support!

Karol


0
์•„๋ฐ”ํƒ€
์ทจ์†Œ
Kvrolito
์ž‘์„ฑ์ž


Unfortunately, thatโ€™s not the case. While Iโ€™ve successfully used inline XML templates, thatโ€™s not the approach I want to take. Iโ€™d like to define my OWL templates in separate XML files so that I can pass props and create dynamic, reusable components.

๐Ÿงฉ Template File: owl_templates.xml

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
  <t t-name="my_folder.owl_main_component" owl="1">
    <div>
      <h3>This is rendered using OWL</h3>
    </div>
    <!-- I intentionally commented out the <t> tag earlier to test loading -->
  </t>
</templates>

๐Ÿง  Component File: owl_component.js

/** @odoo-module **/

import { Component, mount, xml, whenReady } from '@odoo/owl';
import { templates } from '@web/core/assets';

export class OwlMainComponent extends Component {}

OwlMainComponent.template = 'my_folder.owl_main_component';

// VERSION 1: await template loading inside whenReady
whenReady(async () => {
	await templates;
	const element = document.getElementById('hello-box-root');
	if (element) {
		mount(OwlMainComponent, element);
	} else {
		console.warn('โŒ Missing #hello-box-root');
	}
});

// VERSION 2: naive sync mount
// const element = document.getElementById('hello-box-root');
// mount(OwlMainComponent, element);

// VERSION 3: basic whenReady
// whenReady(() => {
// 	const element = document.getElementById('hello-box-root');
// 	if (element) {
// 		mount(OwlMainComponent, element, { templates });
// 	}
// });

๐Ÿ” Investigation So Far

When I intentionally break the XML file (e.g. by removing a <t>), Odoo correctly throws an error โ€” which proves the XML is found and parsed.

I also inspected the compiled web.assets_frontend_lazy.js. It turns out:

  • The component is mounted around line 97278
  • The XML template is only registered around line 104900

This confirms the component tries to render before the template is available.

๐Ÿงช Asset Load Order (Manifest)

To fix this, I tried forcing the load order using before and prepend:

'web.assets_frontend': [
    # ('prepend', 'my_folder/static/src/js/owl_templates.xml'),
    # ('before', 'my_folder/static/src/js/owl_component.js',
    #           'my_folder/static/src/js/owl_templates.xml'),
    ('before', 'my_folder/static/src/js/owl_templates.xml', 
               'my_folder/static/src/js/owl_component.js'),
]

However, every attempt resulted in an error saying either the XML or JS file could not be found โ€” depending on which directive I used.

๐Ÿ†˜ Summary

At this point Iโ€™ve tried every variation I could think of. Itโ€™s very frustrating that something as basic as loading a QWeb XML file into an OWL component doesn't work as expected.

If anyone has had success with a similar setup or knows what I might be doing wrong โ€” Iโ€™d deeply appreciate your help ๐Ÿ™

์•„๋ฐ”ํƒ€
D Enterprise
๋ฒ ์ŠคํŠธ ๋‹ต๋ณ€

Hii

__manifest__.py

{ "name": "Custom OWL Dashboard", "version": "1.0", "depends": ["base", "web"], "assets": { "web.assets_frontend": [ "my_module/static/src/js/HelloBox.js", "my_module/static/src/js/init_owl.js", ], }, "data": [ "views/dashboard_menu.xml", ], "installable": True, "application": True, }

HelloBox.js

my_module/static/src/js/HelloBox.js

/** @odoo -module **/ import { Component, xml } from "@odoo/owl"; export class HelloBox extends Component { static template = xml` <div class="hello-box bg-light p-3 rounded shadow"> <h2 class="mb-3"><t t-esc="props.title"/></h2> <button class="btn btn-primary" t-on-click="sayHello">Click me</button> </div> `; static props = { title: { type: String }, }; sayHello() { alert("Hello from OWL!"); } }

init_owl.js

my_module/static/src/js/init_owl.js

/** @odoo -module **/ import { mount, whenReady } from "@odoo/owl"; import { HelloBox } from "./HelloBox"; whenReady(() => { const root = document.getElementById("hello-box-root"); console.log("๐Ÿ“ฆ Mounting HelloBox into", root); if (root) { mount(HelloBox, { target: root, props: { title: "Hello from OWL!", }, }); } else { console.warn("โš ๏ธ Element #hello-box-root not found."); } });

dashboard_menu.xml

my_module/views/dashboard_menu.xml


<odoo> <template id="assets_backend" inherit_id="web.assets_backend" name="OWL Dashboard Assets"> <xpath expr="." position="inside"> <link rel="stylesheet" href="/web/static/lib/bootstrap/css/bootstrap.min.css"/> </xpath> </template> <record id="action_dashboard_hello" model="ir.actions.client"> <field name="name">OWL Dashboard</field> <field name="tag">hello_dashboard</field> </record> <menuitem id="menu_owl_dashboard_root" name="OWL Dashboard" sequence="10"/> <menuitem id="menu_owl_dashboard" parent="menu_owl_dashboard_root" name="Hello" action="action_dashboard_hello"/> </odoo>

JS Controller (Frontend Mount)

You need to register your OWL component on that page. Add this file:

my_module/static/src/js/dashboard_controller.js (optional if you're using OWL directly)

If you're using the tag 'hello_dashboard', register it using a JS client action โ€” or skip that if you're directly including the root container via another QWeb view.

i hope it is usefull

0
์•„๋ฐ”ํƒ€
์ทจ์†Œ
ํ† ๋ก ์ด ์žฌ๋ฏธ์žˆ์œผ์‹ ๊ฐ€์š”? ์ง์ ‘ ์ฐธ์—ฌํ•ด๋ณด์„ธ์š”!

์ง€๊ธˆ ๋ฐ”๋กœ ๊ฐ€์ž…ํ•˜์—ฌ ๋…์  ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด๋ณด๊ณ  ํŠน๋ณ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์†Œํ†ตํ•˜์„ธ์š”!

๊ฐ€์ž…
๊ด€๋ จ ๊ฒŒ์‹œ๋ฌผ ๋‹ต๊ธ€ ํ™”๋ฉด ํ™œ๋™
How to hide the title or the close (X) button from a dialogService dialog?
javascript development debug
์•„๋ฐ”ํƒ€
์•„๋ฐ”ํƒ€
2
9์›” 25
1279
Error with rpc call
javascript development function debug
์•„๋ฐ”ํƒ€
์•„๋ฐ”ํƒ€
์•„๋ฐ”ํƒ€
2
7์›” 25
2244
Custom Cards Payment Module: POS Payment Summary Not Updating with Installments
javascript development sales project
์•„๋ฐ”ํƒ€
์•„๋ฐ”ํƒ€
2
2์›” 25
2392
(((guia-ayuda)))ยฟCรณmo llamar a Latam Chile desde celular?
development debug
์•„๋ฐ”ํƒ€
0
12์›” 25
1
Testing of computed field in Odoo 18 extension dev
development debug
์•„๋ฐ”ํƒ€
1
11์›” 25
801
์ปค๋ฎค๋‹ˆํ‹ฐ
  • ํŠœํ† ๋ฆฌ์–ผ
  • ๋ฌธ์„œ
  • ํฌ๋Ÿผ
์˜คํ”ˆ ์†Œ์Šค
  • ๋‹ค์šด๋กœ๋“œ
  • Github
  • Runbot
  • ๋ฒˆ์—ญ
์„œ๋น„์Šค
  • Odoo.sh ํ˜ธ์ŠคํŒ…
  • ๊ณ ๊ฐ ์ง€์›
  • ์—…๊ทธ๋ ˆ์ด๋“œ
  • ๋งž์ถค ๊ฐœ๋ฐœ
  • ํ•™์Šต
  • ํšŒ๊ณ„์‚ฌ ๊ฒ€์ƒ‰
  • ํŒŒํŠธ๋„ˆ ๊ฒ€์ƒ‰
  • ํŒŒํŠธ๋„ˆ ๋“ฑ๋ก
ํšŒ์‚ฌ ์†Œ๊ฐœ
  • ํšŒ์‚ฌ ์†Œ๊ฐœ
  • ๋ธŒ๋žœ๋“œ ์ž์‚ฐ
  • ์ƒ๋‹ด ๋ฌธ์˜
  • ์ธ์žฌ ์ฑ„์šฉ
  • ํ–‰์‚ฌ
  • ํŒŸ์บ์ŠคํŠธ
  • ๋ธ”๋กœ๊ทธ
  • ๊ณ ๊ฐ ์‚ฌ๋ก€
  • ๋ฒ•์ ๊ณ ์ง€ โ€ข ๊ฐœ์ธ์ •๋ณด
  • ๋ณด์•ˆ
ุงู„ู’ุนูŽุฑูŽุจูŠู‘ุฉ Catalร  ็ฎ€ไฝ“ไธญๆ–‡ ็น้ซ”ไธญๆ–‡ (ๅฐ็ฃ) ฤŒeลกtina Dansk Nederlands English Suomi Franรงais Deutsch เคนเคฟเค‚เคฆเฅ€ Bahasa Indonesia Italiano ๆ—ฅๆœฌ่ชž ํ•œ๊ตญ์–ด (KR) Lietuviลณ kalba Jฤ™zyk polski Portuguรชs (BR) romรขnฤƒ ั€ัƒััะบะธะน ัะทั‹ะบ Slovenskรฝ jazyk slovenลกฤina Espaรฑol (Amรฉrica Latina) Espaรฑol เธ เธฒเธฉเธฒเน„เธ—เธข Tรผrkรงe ัƒะบั€ะฐั—ะฝััŒะบะฐ Tiแบฟng Viแป‡t

Odoo๋Š” CRM, ์ด์ปค๋จธ์Šค, ํšŒ๊ณ„, ์žฌ๊ณ , POS, ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋“ฑ ๊ธฐ์—…์˜ ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ํ†ตํ•ฉ ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ ์ œํ’ˆ๊ตฐ์ž…๋‹ˆ๋‹ค.

Odoo์˜ ๊ฐ„ํŽธํ•œ UI์™€ ์™„๋ฒฝํ•˜๊ฒŒ ํ†ตํ•ฉ๋œ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now