<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>위고솔루션 | Odoo 공식 파트너</title>
    <link>https://wegosolution.tistory.com/</link>
    <description>Odoo 대한민국 공식 파트너 위고솔루션(WegoSolution) 공식 블로그입니다.
제조/유통 비즈니스 자동화 및 Odoo ERP 구축 전문 서비스를 제공합니다.</description>
    <language>ko</language>
    <pubDate>Tue, 8 Sep 2026 04:31:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>wegosolution</managingEditor>
    <image>
      <title>위고솔루션 | Odoo 공식 파트너</title>
      <url>https://tistory1.daumcdn.net/tistory/8661979/attach/e7b3a43d050b4fafa58253a39c8be1db</url>
      <link>https://wegosolution.tistory.com</link>
    </image>
    <item>
      <title>Odoo Recordset 완벽 가이드: 개념부터 필수 가공 메서드 3종과 self 다루기</title>
      <link>https://wegosolution.tistory.com/23</link>
      <description>&lt;p id=&quot;p-rc_9893178bbdcd653a-136&quot; data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;1,0&quot;&gt;Odoo 개발에서 비즈니스 로직을 작성할 때 가장 기본이 되는 핵심 단위는 &lt;b&gt;레코드셋(Recordset)&lt;/b&gt;입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,2&quot;&gt;. Odoo ORM의 검색과 조회 기능은 개별 레코드가 아니라 항상 레코드들의 모음 형태로 데이터를 반환하므로, 레코드셋의 동작 원리와 가공 방법을 정확히 이해해야 효율적이고 안전한 코드를 작성할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;1063&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OxSQj/dJMcahZZ5JD/Kdz0KeLu7fubZFjI8EnZG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OxSQj/dJMcahZZ5JD/Kdz0KeLu7fubZFjI8EnZG0/img.png&quot; data-alt=&quot;Odoo Recordsets 이해하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OxSQj/dJMcahZZ5JD/Kdz0KeLu7fubZFjI8EnZG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOxSQj%2FdJMcahZZ5JD%2FKdz0KeLu7fubZFjI8EnZG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;odoo-recordset-architecture-and-operations&quot; loading=&quot;lazy&quot; width=&quot;690&quot; height=&quot;1063&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;1063&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Odoo Recordsets 이해하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ4AE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. Recordset의 개념과 동작 원리&lt;/h3&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-137&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;레코드셋(Recordset)은 동일한 Odoo 모델에서 가져온 레코드들의 집합 객체입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;. 조건에 일치하는 데이터가 0건, 1건, 혹은 수백 건이든 상관없이 ORM 메서드의 반환 결과는 언제나 일관된 레코드셋 타입으로 제공됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;5,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-138&quot; data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;6,0&quot;&gt;파이썬의 기본 리스트(List)와 유사하게 반복 순회(Iteration)가 가능하지만, 모든 요소가 동일한 Odoo 모델의 레코드이며 모델 고유의 필드와 비즈니스 메서드에 즉시 접근할 수 있다는 점이 다릅니다&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ4wE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 'sale' 상태인 판매 주문 검색 (Recordset 반환 예시)
orders = self.env[&quot;sale.order&quot;].search([
    (&quot;state&quot;, &quot;=&quot;, &quot;sale&quot;)
])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0,0&quot;&gt;self.env[&quot;sale.order&quot;]&lt;/b&gt;: 대상 모델인 sale.order에 접근하기 위한 진입점 환경입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0,0&quot;&gt;.search([(&quot;state&quot;, &quot;=&quot;, &quot;sale&quot;)])&lt;/b&gt;: 상태 필드가 확정(sale)인 모든 데이터를 PostgreSQL에서 안전하게 조회합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0,0&quot;&gt;orders&lt;/b&gt;: 검색 조건에 부합하는 모든 판매 주문 레코드를 포함하는 레코드셋 인스턴스입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-142&quot; data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;9,0&quot;&gt;  [이전 글: &lt;a href=&quot;https://wegosolution.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SQL 없이 데이터 다루는 Odoo ORM 기초: 실무 핵심 메서드 7가지 완벽 정리 바로가기&lt;/a&gt;]&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size23&quot;&gt;2. 실무 필수 레코드셋 가공 메서드 3종&lt;/h3&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-143&quot; data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;12,0&quot;&gt;레코드셋을 조회한 후에는 데이터베이스에 불필요한 추가 쿼리를 발생시키지 않고 메모리 상에서 필터링, 데이터 추출, 정렬 작업을 체이닝(Chaining)하여 고속으로 처리할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,2&quot;&gt;. 세 메서드 모두 원본 레코드셋을 변경하지 않고 새로운 레코드셋(또는 값 목록)을 반환합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ6AE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;[Search] ───&amp;gt; [Recordset] ───&amp;gt; [Powerful Operations: filtered / mapped / sorted]
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;① filtered(): 조건부 메모리 필터링&lt;/p&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-144&quot; data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,0&quot;&gt;지정한 조건 함수(주로 lambda)를 평가하여 참(True)인 레코드만 선별한 새로운 레코드셋을 만듭니다&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ6gE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 총액(amount_total)이 10,000 초과인 고액 주문만 필터링
high_value_orders = orders.filtered(
    lambda o: o.amount_total &amp;gt; 10000
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;17,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0,0&quot;&gt;반환값&lt;/b&gt;: 조건을 만족하는 레코드들로만 구성된 새로운 레코드셋 (원본 orders는 불변 유지)&lt;/span&gt;&lt;span data-path-to-node=&quot;17,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② mapped(): 필드 값 및 연관 레코드셋 추출&lt;/p&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-146&quot; data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;19,0&quot;&gt;레코드셋 내 각 요소에서 특정 필드의 값을 순회 없이 일괄 추출합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,2&quot;&gt;. 인자로 전달하는 필드의 속성에 따라 반환 형태가 달라집니다&lt;/span&gt;&lt;span data-path-to-node=&quot;19,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ7QE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 주문 레코드들에 연결된 고객(partner_id) 레코드셋 추출
customers = orders.mapped(&quot;partner_id&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;21,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0,0&quot;&gt;관계형 필드(Many2one 등) 전달 시&lt;/b&gt;: 연결된 레코드들의 중복을 제거한 새로운 &lt;b data-index-in-node=&quot;47&quot; data-path-to-node=&quot;21,0,0,0&quot;&gt;레코드셋&lt;/b&gt; 반환&lt;/span&gt;&lt;span data-path-to-node=&quot;21,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;21,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;일반 필드(Char, Float 등) 전달 시&lt;/b&gt;: 해당 필드 값들의 파이썬 &lt;b data-index-in-node=&quot;41&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;리스트(List)&lt;/b&gt; 반환&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;③ sorted(): 인메모리 정렬&lt;/p&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-149&quot; data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;23,0&quot;&gt;지정한 정렬 기준(Key)에 맞춰 레코드들의 순서를 재정렬한 새로운 레코드셋을 생성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;23,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;23,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ8QE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 주문 총액(amount_total) 기준 내림차순(큰 금액 순) 정렬
sorted_orders = orders.sorted(
    key=lambda o: o.amount_total,
    reverse=True
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;25,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0,0&quot;&gt;key&lt;/b&gt;: 레코드 객체를 받아 정렬 기준으로 사용할 비교 값을 반환하는 함수 지정&lt;/span&gt;&lt;span data-path-to-node=&quot;25,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;25,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;25,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0,0&quot;&gt;reverse=True&lt;/b&gt;: 기본값인 오름차순 대신 내림차순 정렬 적용&lt;/span&gt;&lt;span data-path-to-node=&quot;25,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;25,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size23&quot;&gt;3. 메서드 비교 및 활용 기준&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;28&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;메서드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;입력 인자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;주요 반환값&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;실무 활용 기준&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,0,0&quot;&gt;filtered()&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,1,1,0,0&quot;&gt;조건 함수 (lambda)&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,1,2,0,0&quot;&gt;필터링된 레코드셋&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,1,3,0,0&quot;&gt;특정 상태값, 금액 기준 등 조건에 맞는 레코드만 추려낼 때&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,2,0,0&quot;&gt;mapped()&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,2,1,0,0&quot;&gt;필드명 (문자열)&lt;/span&gt;&lt;span data-path-to-node=&quot;28,2,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,2,2,0,0&quot;&gt;레코드셋 또는 값 리스트&lt;/span&gt;&lt;span data-path-to-node=&quot;28,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,2,3,0,0&quot;&gt;연결된 고객/품목 레코드셋 수집 또는 금액/이메일 리스트 추출 시&lt;/span&gt;&lt;span data-path-to-node=&quot;28,2,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,3,0,0&quot;&gt;sorted()&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,3,1,0,0&quot;&gt;key 함수, reverse 여부&lt;/span&gt;&lt;span data-path-to-node=&quot;28,3,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,3,2,0,0&quot;&gt;정렬된 레코드셋&lt;/span&gt;&lt;span data-path-to-node=&quot;28,3,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;28,3,3,0,0&quot;&gt;금액 순, 최신 날짜 순 등으로 레코드 표시 순서를 변경할 때&lt;/span&gt;&lt;span data-path-to-node=&quot;28,3,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h4 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size23&quot;&gt;4. Odoo 개발 골든 룰: self의 다중 레코드 처리&lt;/h3&gt;
&lt;p id=&quot;p-rc_9893178bbdcd653a-161&quot; data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;31,0&quot;&gt;Odoo 모델의 메서드 내부에서 self는 단일 레코드가 아닌 &lt;b data-index-in-node=&quot;35&quot; data-path-to-node=&quot;31,0&quot;&gt;여러 레코드를 담은 레코드셋&lt;/b&gt;일 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;31,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;31,2&quot;&gt;. 단일 레코드(싱글톤) 환경을 명시적으로 요구하는 상황이 아니라면, 다중 레코드셋이 인입되더라도 정상 동작하도록 반복 순회 패턴을 적용해야 합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;31,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;31,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjxusLgqteWAxUAAAAAHQAAAAAQ_gE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;pf&quot;&gt;&lt;code&gt;# 올바른 패턴: 다중 레코드 지원
def mark_as_done(self):
    for record in self:
        record.state = 'done'
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;33&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0,0,0&quot;&gt;안전한 순회&lt;/b&gt;: for record in self: 형태로 작성하면 self에 담긴 레코드가 1건이든 다건이든 에러 없이 동일하게 동작합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;33,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,1,0,0&quot;&gt;주의점&lt;/b&gt;: self.state = 'done'과 같이 단일 객체 방식으로 직접 접근할 경우, self에 2개 이상의 레코드가 포함되었을 때 예상치 못한 로직 결함이나 예외 오류(Expected singleton)가 발생할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;33,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>4. Odoo 기술 &amp;amp; 개발(Tech, Architecture)/커스텀 모듈 개발 &amp;amp; API</category>
      <category>Odoo</category>
      <category>odooorm</category>
      <category>OdooRecordset</category>
      <category>odoo개발</category>
      <category>Python</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/23</guid>
      <comments>https://wegosolution.tistory.com/23#entry23comment</comments>
      <pubDate>Sat, 5 Sep 2026 20:37:19 +0900</pubDate>
    </item>
    <item>
      <title>Odoo Model Inheritance 완벽 가이드: 3가지 모델 상속 방식과 실무 아키텍처</title>
      <link>https://wegosolution.tistory.com/22</link>
      <description>&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. Odoo 상속의 기본 동작 원리 (How Inheritance Works)&lt;/h3&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-245&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;Odoo 상속 메커니즘은 기존 모델(Base Model)을 기반으로 커스텀 모듈에서 확장 모델(Extended Model)을 선언하여 기능을 병합하는 구조로 동작합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;대상 모델 예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;보유 필드 구성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;Base Model&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;sale.order&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;name, partner_id, amount_total, state 등&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;6,1,3,0,0&quot;&gt;Odoo 표준 원본 판매 주문 모델&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;Inherited (확장)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;커스텀 모듈&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;customer_reference, extra_note 등&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;6,2,3,0,0&quot;&gt;개발자가 추가 정의한 신규 커스텀 필드&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;Result (결과)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;Extended sale.order&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;원본 필드 + 추가 커스텀 필드 통합&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;6,3,3,0,0&quot;&gt;원본 코드를 건드리지 않고 최종 병합된 모델&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-249&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;7,0&quot;&gt;  [이전 글: &lt;a href=&quot;https://wegosolution.tistory.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Odoo Model 정의와 Field 타입 완벽 가이드 바로가기&lt;/a&gt;]&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;2. Odoo 3대 모델 상속 방식 (Types of Inheritance)&lt;/h3&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-250&quot; data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;10,0&quot;&gt;Odoo는 업무 요구사항과 데이터베이스 설계 방식에 따라 3가지 상속 패턴을 제공합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1771&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mEKs6/dJMcadC60LD/dB7Alwv4GZFDkAeEQW2KOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mEKs6/dJMcadC60LD/dB7Alwv4GZFDkAeEQW2KOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mEKs6/dJMcadC60LD/dB7Alwv4GZFDkAeEQW2KOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmEKs6%2FdJMcadC60LD%2FdB7Alwv4GZFDkAeEQW2KOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;odoo-model-inheritance-architecture-overview&quot; loading=&quot;lazy&quot; width=&quot;1771&quot; height=&quot;946&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1771&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-hveid=&quot;10&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① _inherit: 기존 모델 확장 (In-place Extension)&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-251&quot; data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;13,0&quot;&gt;새로운 테이블이나 모델을 생성하지 않고, 이미 존재하는 표준 모델에 필드나 비즈니스 메서드를 직접 덧붙여 확장하는 가장 대표적인 방식입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-hveid=&quot;12&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from odoo import models, fields

class SaleOrder(models.Model):
    _inherit = &quot;sale.order&quot;

    customer_reference = fields.Char(string=&quot;Customer Reference&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0,0&quot;&gt;_inherit = &quot;sale.order&quot;&lt;/b&gt;: 별도의 _name을 지정하지 않아 기존 sale.order 모델 자체를 직접 확장합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;15,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0,0&quot;&gt;적용 시점&lt;/b&gt;: 기존 표준 앱(영업, 재고, 회계 등)의 기본 모델에 몇 가지 추가 필드나 커스텀 로직을 덧붙일 때 사용합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② _name + _inherit: 기존 모델 기반 새 모델 생성 (Extension Prototype)&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-254&quot; data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;17,0&quot;&gt;기존 모델의 모든 필드와 메서드 정의를 복제해 상속받으면서, 데이터베이스 상에는 독립된 별도의 신규 모델(테이블)을 생성하는 방식입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;17,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-hveid=&quot;18&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from odoo import models, fields

class CustomSaleOrder(models.Model):
    _name = &quot;custom.sale.order&quot;
    _inherit = &quot;sale.order&quot;

    extra_note = fields.Text()
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0,0&quot;&gt;_name과 _inherit 동시 사용&lt;/b&gt;: sale.order의 데이터 구조를 물려받되, PostgreSQL 상에 custom_sale_order라는 독립된 테이블을 새로 생성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;19,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0,0&quot;&gt;적용 시점&lt;/b&gt;: 기존 모델의 비즈니스 로직과 구조는 재사용하되, 원본 데이터와 완전히 분리된 데이터셋을 별도로 운영하고자 할 때 사용합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ _inherits: 위임 상속 (Delegation Inheritance)&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-257&quot; data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;21,0&quot;&gt;새로운 모델을 생성하면서 특정 Many2one 관계형 필드를 매개로 대상 모델의 필드 및 동작을 위임받아 투명하게 접근하는 방식입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-hveid=&quot;24&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;from odoo import models, fields

class Employee(models.Model):
    _name = &quot;hr.employee&quot;
    _inherits = {'res.partner': 'partner_id'}

    partner_id = fields.Many2one(
        'res.partner',
        string=&quot;Related Partner&quot;,
        required=True,
        ondelete='cascade'
    )
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;23,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0,0&quot;&gt;_inherits = {'res.partner': 'partner_id'}&lt;/b&gt;: hr.employee 레코드에서 employee.name처럼 res.partner의 필드에 직접 접근할 수 있도록 위임 관계를 정의합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;23,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;23,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;23,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0,0&quot;&gt;적용 시점&lt;/b&gt;: 다형성(Polymorphism)이나 복합 엔티티 구조에서 다른 모델의 정보를 포함(Has-a)하여 연동할 때 활용합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;23,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;23,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;3. 상속 방식 3종 비교 및 선택 기준&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;26&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;상속 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;신규 모델 생성 여부&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DB 테이블 변화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;핵심 사용 목적 및 특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;26,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0,0&quot;&gt;_inherit&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;26,1,1,0,0&quot;&gt;없음 (기존 모델 유지)&lt;/span&gt;&lt;span data-path-to-node=&quot;26,1,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;26,1,2,0&quot;&gt;기존 테이블 컬럼 추가&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;26,1,3,0,0&quot;&gt;표준 기능에 필드 및 메서드 단순 확장&lt;/span&gt;&lt;span data-path-to-node=&quot;26,1,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;26,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0,0&quot;&gt;_name + _inherit&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;26,2,1,0,0&quot;&gt;신규 모델 생성&lt;/span&gt;&lt;span data-path-to-node=&quot;26,2,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;26,2,2,0&quot;&gt;신규 독립 테이블 생성&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;26,2,3,0,0&quot;&gt;기존 스키마 구조를 복제하여 별도 데이터 관리&lt;/span&gt;&lt;span data-path-to-node=&quot;26,2,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;26,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,3,0,0&quot;&gt;_inherits&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;26,3,1,0,0&quot;&gt;신규 모델 생성&lt;/span&gt;&lt;span data-path-to-node=&quot;26,3,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;26,3,2,0&quot;&gt;신규 테이블 + FK 연결&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;26,3,3,0,0&quot;&gt;Many2one 필드를 매개로 타 모델 필드 위임 참조&lt;/span&gt;&lt;span data-path-to-node=&quot;26,3,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h4 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size23&quot;&gt;4. Odoo 상속이 필수적인 이유와 골든 룰&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,0,0,0&quot;&gt;표준 소스 코드 무결성 유지&lt;/b&gt;: Odoo 코어 파일을 수정하지 않아 타 표준 모듈과의 충돌 위험이 없습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;29,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,0,0&quot;&gt;버전 업그레이드 용이성&lt;/b&gt;: Odoo 새 버전 릴리즈 시 원본 코드가 유지되므로 커스텀 모듈의 호환성만 점검하여 안전하게 마이그레이션할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;29,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,2,0,0&quot;&gt;모듈화 및 유지보수성&lt;/b&gt;: 기능 단위로 커스터마이징이 모듈화되어 필요한 기능을 선택적으로 활성화/비활성화할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;29,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-path-to-node=&quot;30&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p id=&quot;p-rc_9a4711e4769e1031-269&quot; data-path-to-node=&quot;30,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #953b34;&quot;&gt;&lt;b&gt;  Golden Rule: Odoo 코어 소스는 절대 직접 수정하지 말고, 반드시 &quot;상속(Inheritance)&quot;을 통해 확장하세요.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>4. Odoo 기술 &amp;amp; 개발(Tech, Architecture)/커스텀 모듈 개발 &amp;amp; API</category>
      <category>ERP</category>
      <category>Odoo</category>
      <category>odooerp</category>
      <category>OdooInheritance</category>
      <category>odoo개발</category>
      <category>PostgreSQL</category>
      <category>Python</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/22</guid>
      <comments>https://wegosolution.tistory.com/22#entry22comment</comments>
      <pubDate>Sun, 30 Aug 2026 18:40:44 +0900</pubDate>
    </item>
    <item>
      <title>Odoo Views &amp;amp; XML 구조 완벽 가이드: 5가지 핵심 뷰와 UI 렌더링 원리</title>
      <link>https://wegosolution.tistory.com/21</link>
      <description>&lt;p id=&quot;p-rc_415b84dffdd31f47-93&quot; data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;1,0&quot;&gt;Odoo(오두) ERP 개발에서 뷰(View)는 백엔드 파이썬 모델에 정의된 데이터를 사용자 화면에 어떻게 시각화하고 배치할지 정의하는 핵심 XML 요소입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,2&quot;&gt;. Odoo 프레임워크는 HTML을 직접 하드코딩하지 않고, ir.ui.view 모델 기반의 표준 XML 문법을 통해 일관된 웹 UI/UX를 자동으로 생성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. Odoo 화면 생성 아키텍처: Python Model에서 UI까지&lt;/h3&gt;
&lt;p id=&quot;p-rc_415b84dffdd31f47-94&quot; data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;4,0&quot;&gt;Odoo 시스템에서 데이터가 최종 사용자 브라우저에 렌더링되기까지는 3단계 파이프라인을 거칩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1755&quot; data-origin-height=&quot;963&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rLGVQ/dJMcajjei1k/V6XywFxcOXjZFtizAPKLB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rLGVQ/dJMcajjei1k/V6XywFxcOXjZFtizAPKLB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rLGVQ/dJMcajjei1k/V6XywFxcOXjZFtizAPKLB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrLGVQ%2FdJMcajjei1k%2FV6XywFxcOXjZFtizAPKLB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;odoo-view-xml-architecture-and-ui-flow&quot; loading=&quot;lazy&quot; width=&quot;1755&quot; height=&quot;963&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1755&quot; data-origin-height=&quot;963&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwibn-bb9ceWAxUAAAAAHQAAAAAQ2QE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;계층 명칭&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;주요 역할 및 기술적 설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;①&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;Python Model&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;6,1,2,0,0&quot;&gt;데이터베이스 스키마(필드)와 비즈니스 로직 및 제약조건을 파이썬 코드로 정의&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;②&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,1,0&quot;&gt;XML View&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;6,2,2,0,0&quot;&gt;모델의 필드를 화면 어디에 어떤 형태(입력창, 표, 카드 등)로 배치할지 XML 구조로 설계&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;③&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,0&quot;&gt;User Interface&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;6,3,2,0,0&quot;&gt;모델과 뷰가 결합되어 웹 브라우저에 최종 렌더링되는 인터랙티브 화면&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p id=&quot;p-rc_415b84dffdd31f47-98&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;7,0&quot;&gt;  [이전 글: &lt;a href=&quot;https://wegosolution.tistory.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Odoo Model 정의와 Field 타입 완벽 가이드 바로가기&lt;/a&gt;]&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;2. 실무에서 가장 많이 쓰는 Odoo 5대 핵심 뷰 (Views)&lt;/h3&gt;
&lt;p id=&quot;p-rc_415b84dffdd31f47-99&quot; data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;10,0&quot;&gt;동일한 비즈니스 모델 데이터라도 업무 목적과 워크플로우에 따라 최적화된 형태로 표현할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0ej2e/dJMcadpHjcm/o9fsccmTm1Iz7EYkxTvk21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0ej2e/dJMcadpHjcm/o9fsccmTm1Iz7EYkxTvk21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0ej2e/dJMcadpHjcm/o9fsccmTm1Iz7EYkxTvk21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0ej2e%2FdJMcadpHjcm%2Fo9fsccmTm1Iz7EYkxTvk21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;odoo-five-core-views-comparison&quot; loading=&quot;lazy&quot; width=&quot;1296&quot; height=&quot;705&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwibn-bb9ceWAxUAAAAAHQAAAAAQ3gE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0,0&quot;&gt;Form View (상세 입력 및 수정)&lt;/b&gt;: 단일 레코드의 세부 정보를 조회하고 데이터를 입력&amp;middot;수정하는 기본 폼 화면입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,0,2&quot;&gt;. 상단 저장/취소 버튼 및 필드별 그룹 레이아웃을 제공합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0,0&quot;&gt;List View (목록 조회 및 관리)&lt;/b&gt;: 다중 레코드를 스프레드시트와 같은 표(Table) 형태로 출력합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,0,2&quot;&gt;. 대량 데이터의 비교 분석에 적합하며, Odoo 17 이전 버전의 &amp;lt;tree&amp;gt; 태그가 최신 버전에서 &amp;lt;list&amp;gt; 태그로 표준화되었습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0,0&quot;&gt;Search View (검색 및 필터링)&lt;/b&gt;: 화면 상단 검색바를 통해 조건 검색, 다중 필터(Filter), 그룹화(Group by) 기능을 제공하는 보조 뷰입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,3,0,0&quot;&gt;Kanban View (카드형 시각화)&lt;/b&gt;: 레코드를 카드 형태로 표현하고 상태(State) 단계별 컬럼으로 분류합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,3,0,2&quot;&gt;. 영업 파이프라인이나 프로젝트 작업 진행률 관리에 최적화되어 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,3,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,3,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,4,0,0&quot;&gt;Calendar View (달력 일정 뷰)&lt;/b&gt;: 날짜/시간(Date, Datetime) 필드 기반으로 레코드를 캘린더 상에 배치하여 마감일, 예약 현황 등을 직관적으로 파악합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,4,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,4,0,2&quot;&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,4,0,2&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;3. XML 뷰 정의 구조와 핵심 태그 분석&lt;/h3&gt;
&lt;p id=&quot;p-rc_415b84dffdd31f47-105&quot; data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,0&quot;&gt;Odoo에서 모든 화면 뷰는 시스템 내부의 ir.ui.view 모델에 하나의 데이터 레코드로 등록됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwibn-bb9ceWAxUAAAAAHQAAAAAQ5QE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;XML&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;record id=&quot;view_student_form&quot; model=&quot;ir.ui.view&quot;&amp;gt;
    &amp;lt;field name=&quot;name&quot;&amp;gt;school.student.form&amp;lt;/field&amp;gt;
    &amp;lt;field name=&quot;model&quot;&amp;gt;school.student&amp;lt;/field&amp;gt;
    &amp;lt;field name=&quot;arch&quot; type=&quot;xml&quot;&amp;gt;
        &amp;lt;form string=&quot;Student&quot;&amp;gt;
            &amp;lt;sheet&amp;gt;
                &amp;lt;group&amp;gt;
                    &amp;lt;field name=&quot;name&quot;/&amp;gt;
                    &amp;lt;field name=&quot;partner_id&quot;/&amp;gt;
                    &amp;lt;field name=&quot;state&quot;/&amp;gt;
                &amp;lt;/group&amp;gt;
            &amp;lt;/sheet&amp;gt;
        &amp;lt;/form&amp;gt;
    &amp;lt;/field&amp;gt;
&amp;lt;/record&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뷰 선언부 핵심 파라미터&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0,0&quot;&gt;id&lt;/b&gt;: 모듈 내에서 이 뷰 레코드를 고유하게 식별하는 XML ID이며, 다른 모듈에서 뷰를 상속(inherit_id)하거나 액션에서 참조할 때 사용합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0,0&quot;&gt;name&lt;/b&gt;: 개발자가 식별하기 위한 뷰의 기술적 명칭으로, 통상 모델명.뷰유형 형태로 작성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,2,0,0&quot;&gt;model&lt;/b&gt;: 해당 뷰가 바인딩될 대상 Odoo 모델명을 지정합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;18,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,3,0,0&quot;&gt;arch (Architecture)&lt;/b&gt;: 실제 사용자 화면의 시각적 UI 레이아웃이 정의되는 핵심 영역입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;18,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,3,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;arch 내부 레이아웃 컨테이너 태그&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;20,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0,0&quot;&gt;&amp;lt;sheet&amp;gt;&lt;/b&gt;: 폼 화면 중앙에 흰색 문서 카드 형태의 시각적 컨테이너를 생성하여 여백과 반응형 너비를 자동 제어합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;20,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0,0&quot;&gt;&amp;lt;group&amp;gt;&lt;/b&gt;: 내부 필드들을 라벨(Label)과 입력 위젯(Widget)으로 깔끔하게 2단 정렬 배치합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;20,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,2,0,0&quot;&gt;&amp;lt;field name=&quot;...&quot;/&amp;gt;&lt;/b&gt;: 대상 모델에 선언된 파이썬 필드를 화면에 바인딩하여 렌더링합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;4. Odoo View 개발 핵심 요약&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;23&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;주요 역할 및 기술 사양&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0,0&quot;&gt;Model&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,1,0&quot;&gt;Python&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;23,1,2,0,0&quot;&gt;데이터베이스 스키마 정의, ORM 데이터 처리 및 비즈니스 로직&lt;/span&gt;&lt;span data-path-to-node=&quot;23,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,2,0,0&quot;&gt;View&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,1,0&quot;&gt;XML&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;23,2,2,0,0&quot;&gt;화면 레이아웃, 입력 폼, 데이터 그리드 및 위젯 시각화&lt;/span&gt;&lt;span data-path-to-node=&quot;23,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,3,0,0&quot;&gt;ir.ui.view&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,3,1,0&quot;&gt;Base Model&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;23,3,2,0,0&quot;&gt;모든 뷰 XML 코드가 컴파일되어 저장되는 Odoo 메타 모델&lt;/span&gt;&lt;span data-path-to-node=&quot;23,3,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,4,0,0&quot;&gt;arch&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,4,1,0&quot;&gt;XML Field&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;23,4,2,0,0&quot;&gt;UI 배치 설계도가 담기는 실제 렌더링 데이터 영역&lt;/span&gt;&lt;span data-path-to-node=&quot;23,4,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-path-to-node=&quot;42&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;Odoo 도입 관련해서 궁금한 점이 있으시거나 자사 맞춤 견적 상담이 필요하시다면 언제든지 위고솔루션으로 문의해 주세요!&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>4. Odoo 기술 &amp;amp; 개발(Tech, Architecture)/커스텀 모듈 개발 &amp;amp; API</category>
      <category>formview</category>
      <category>listview</category>
      <category>Odoo</category>
      <category>odooerp</category>
      <category>odooxml</category>
      <category>odoo개발</category>
      <category>Python</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/21</guid>
      <comments>https://wegosolution.tistory.com/21#entry21comment</comments>
      <pubDate>Sun, 30 Aug 2026 17:49:46 +0900</pubDate>
    </item>
    <item>
      <title>제조업 스마트팩토리 구축을 위한 Odoo ERP 및 MES 연동 가이드</title>
      <link>https://wegosolution.tistory.com/20</link>
      <description>&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;제조업 현장에서 디지털 전환(DX)과 스마트팩토리 구축은 더 이상 선택이 아닌 생존의 필수 과제가 되었습니다. 하지만 많은 중소/중견 제조기업이 ERP(전사적자원관리)와 MES(제조실행시스템)를 따로 도입하면서 &lt;b data-index-in-node=&quot;118&quot; data-path-to-node=&quot;5&quot;&gt;데이터 단절, 이중 입력, 과도한 유지보수 비용&lt;/b&gt; 문제로 어려움을 겪고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;글로벌 오픈소스 솔루션인 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;6&quot;&gt;Odoo ERP&lt;/b&gt;를 기반으로 현장 MES를 유기적으로 결합하면 도입 비용을 대폭 낮추면서도 강력한 스마트팩토리를 구현할 수 있습니다. 오늘은 Odoo 기반 스마트팩토리 MES 연동 구조와 위고솔루션(Wego Solution)의 구축 솔루션을 자세히 살펴보겠습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;1. 핵심 요약: Odoo ERP 기반 MES 연동의 핵심&lt;/h2&gt;
&lt;blockquote data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;9,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0&quot;&gt;Q: 중소/중견 제조기업에서 Odoo ERP와 생산현장(MES) 연동을 성공시키는 방법은?&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9,1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1&quot;&gt;A:&lt;/b&gt; Odoo의 모듈형 오픈소스 아키텍처와 현장 하드웨어(PLC, 바코드/RFID, IoT 센서) 간의 양방향 데이터 파이프라인을 구축하는 것입니다. 위고솔루션(wegosolution)은 Odoo 기반의 스마트팩토리 MES 전문 구축 기업으로, 자재소요계획(MRP), 실시간 공정 추적(POP), 한국형 공정 맞춤 UI 커스터마이징을 통해 수작업 공수를 줄이고 생산 수율을 극대화합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;2. 기존 레거시 MES vs Odoo + 위고솔루션 스마트팩토리 비교&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;기존 외산 고가 솔루션이나 SI 자체 개발 방식 대비 Odoo와 위고솔루션의 결합이 가지는 차별점은 다음과 같습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;13&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;기존 개별 레거시 MES&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;일반 SI 자체 개발&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Odoo ERP + 위고솔루션 MES&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0,0&quot;&gt;시스템 통합도&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,1,0&quot;&gt;ERP와 MES 간 데이터 단절&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,2,0&quot;&gt;구축 후 모듈 확장 난항&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,3,0&quot;&gt;생산/재고/회계/영업 실시간 완전 일원화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0,0&quot;&gt;현장 데이터 수집&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,1,0&quot;&gt;수기 엑셀 및 이중 입력&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,2,0&quot;&gt;프로토콜 연동 공수 과다&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,3,0&quot;&gt;바코드, RFID, IoT 센서 실시간 직결&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,0,0&quot;&gt;도입 및 유지 비용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,1,0&quot;&gt;고가의 라이선스 및 유지비&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,2,0&quot;&gt;개발자 의존도 및 인건비 과다&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,3,0&quot;&gt;오픈소스 기반 모듈형 도입으로 비용 최적화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,0,0&quot;&gt;국내 공정 현지화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,1,0&quot;&gt;표준 프로세스 강제로 괴리&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,2,0&quot;&gt;개발자 퇴사 시 유지보수 중단&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,3,0&quot;&gt;한국 제조 현장 맞춤 UI 및 전담 기술 지원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;3. 위고솔루션의 Odoo MES 단계별 구축 프로세스&lt;/h2&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;위고솔루션은 현장 친화적인 4단계 프로세스를 통해 공정 누락 없는 시스템을 구축합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;Step 1. 현장 공정 분석 및 다단계 BOM 구조화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원자재 입고부터 반제품, 완제품 출하까지의 다단계 BOM(자재명세서) 정립&lt;/li&gt;
&lt;li&gt;병목 공정 및 작업장(Work Center)별 표준 공수 및 택트 타임(Tact Time) 산정&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;Step 2. IoT 디바이스 및 현장 하드웨어 인터페이스 연동&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생산 라인 내 바코드 스캐너, 중량 체커, 설비 PLC 데이터 수집 게이트웨이 연결&lt;/li&gt;
&lt;li&gt;현장 작업자를 위한 터치형 태블릿/키오스크 간이 실적 입력 UI 커스터마이징&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size23&quot;&gt;Step 3. 실시간 공정 추적 및 파일럿 검증 (Pilot Test)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업 지시 ➔ 공정별 실시간 실적 입력 ➔ 자재 자동 차감(Backflushing) 검증&lt;/li&gt;
&lt;li&gt;불량률 집계 및 설비종합효율(OEE) 모니터링 실시간 대시보드 구축&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size23&quot;&gt;Step 4. 전사 오픈 및 지속적인 운영 지원 (SLA)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현장 실무자 및 관리자 교육, 표준 운영 절차서(SOP) 배포&lt;/li&gt;
&lt;li&gt;전담 헬프데스크를 통한 긴급 기술 지원 및 버전 업데이트 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;26&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;26&quot; data-ke-size=&quot;size26&quot;&gt;4. 실제 구축 사례: 정밀 부품 제조업 A사의 성과 지표&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0&quot;&gt;도입 기업:&lt;/b&gt; 자동차 부품 정밀 가공 제조업체 A사 (임직원 80명 규모)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0&quot;&gt;도입 배경:&lt;/b&gt; 수기 작업일보 작성에 따른 재고 불일치, 설비 비가동 원인 파악 지연으로 납기 지연 빈발&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,2,0&quot;&gt;구축 솔루션:&lt;/b&gt; Odoo MRP/MES + 위고솔루션 스마트팩토리 패키지 (바코드 입출고 + 실시간 가동률 대시보드)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,3,0&quot;&gt;정량적 개선 성과:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,3,1,0,0&quot;&gt;재고 정확도:&lt;/b&gt; 기존 78% ➔ &lt;b data-index-in-node=&quot;17&quot; data-path-to-node=&quot;27,3,1,0,0&quot;&gt;99.2% 달성&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,3,1,1,0&quot;&gt;공정 리드타임:&lt;/b&gt; 7영업일 ➔ &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;27,3,1,1,0&quot;&gt;4.5일로 약 35% 단축&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,3,1,2,0&quot;&gt;불량 추적 시간:&lt;/b&gt; 평균 4시간 소요 ➔ &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;27,3,1,2,0&quot;&gt;로트(Lot) 추적으로 5분 내 원인 규명&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1833&quot; data-origin-height=&quot;1012&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfr15/dJMcadpGU35/8XZuG38mUCU2tM3hoxfYM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfr15/dJMcadpGU35/8XZuG38mUCU2tM3hoxfYM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfr15/dJMcadpGU35/8XZuG38mUCU2tM3hoxfYM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flfr15%2FdJMcadpGU35%2F8XZuG38mUCU2tM3hoxfYM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Odoo MES 시스템 기능 구성도: 기준정보, 판매, 매입, 제조, 공정, 설비, 재고, 품질, 현황판 모듈별 상세 기능 목록&quot; loading=&quot;lazy&quot; width=&quot;1833&quot; height=&quot;1012&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1833&quot; data-origin-height=&quot;1012&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;29&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;29&quot; data-ke-size=&quot;size26&quot;&gt;5. 자주 묻는 질문 (FAQ)&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size23&quot;&gt;Q1. Odoo 표준 기능만으로 국내 공장의 실시간 실적 집계(MES)가 가능한가요?&lt;/h3&gt;
&lt;blockquote data-path-to-node=&quot;31&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;31,0&quot; data-ke-size=&quot;size16&quot;&gt;Odoo의 기본 제조 모듈도 훌륭하지만, 국내 공장의 PLC 설비 연동, 바코드 기반 공정 이동, 현장 전용 간이 키오스크 UI 등은 추가 커스터마이징이 필요합니다. &lt;b data-index-in-node=&quot;93&quot; data-path-to-node=&quot;31,0&quot;&gt;위고솔루션&lt;/b&gt;은 국내 제조 환경에 맞춘 전용 확장 모듈을 제공하여 완성형 스마트팩토리를 구현합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;32&quot; data-ke-size=&quot;size23&quot;&gt;Q2. 기존에 사용 중인 그룹웨어나 회계 프로그램과 연동할 수 있나요?&lt;/h3&gt;
&lt;blockquote data-path-to-node=&quot;33&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;33,0&quot; data-ke-size=&quot;size16&quot;&gt;네, 가능합니다. Odoo의 REST API 및 DB 인터페이스를 활용하여 기존 더존, 세무사랑 등 국내 회계 시스템과의 전표 데이터 연동을 지원하며, 필요 시 Odoo 자체 회계/전자세금계산서 모듈로 완전 전환 구축도 가능합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;42&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;Odoo 도입 관련해서 궁금한 점이 있으시거나 자사 맞춤 견적 상담이 필요하시다면 언제든지 위고솔루션으로 문의해 주세요!&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>3. Odoo 기능 가이드 (Apps)/제조, MES 관리</category>
      <category>ERP</category>
      <category>MES</category>
      <category>Odoo</category>
      <category>odooerp</category>
      <category>생산관리시스템</category>
      <category>스마트팩토리</category>
      <category>위고솔루션</category>
      <category>제조업erp</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/20</guid>
      <comments>https://wegosolution.tistory.com/20#entry20comment</comments>
      <pubDate>Sat, 29 Aug 2026 20:40:01 +0900</pubDate>
    </item>
    <item>
      <title>Odoo 개발의 시작: Model 정의와 Field 타입(기본&amp;middot;관계형) 완벽 가이드</title>
      <link>https://wegosolution.tistory.com/19</link>
      <description>&lt;p id=&quot;p-rc_7e6b10a45a56827f-215&quot; data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;1,0&quot;&gt;Odoo(오두) ERP 커스텀 모듈 개발의 핵심은 비즈니스 요구사항에 맞춘 데이터베이스 테이블 및 스키마 구조를 설계하는 것입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,2&quot;&gt;. Odoo 프레임워크는 PostgreSQL 테이블을 직접 DDL로 생성하지 않고, 파이썬 클래스 형태의 모델(Model)과 속성 정의인 필드(Field)를 통해 백엔드 스키마와 ORM을 자동으로 매핑합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;1. Odoo 모델(Model)의 개념과 기본 아키텍처&lt;/h2&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-216&quot; data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;3,0&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Odoo 모델은 데이터베이스 테이블 및 비즈니스 로직을 캡슐화한 파이썬 클래스 객체&lt;/b&gt;&lt;/span&gt;입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;3,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;3,2&quot;&gt;. 모든 영속적 비즈니스 모델은 &lt;b&gt;models.Model 클래스&lt;/b&gt;를 상속받아 고유한 시스템 식별자 _name을 정의함으로써 생성됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;3,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;3,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;1123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgz2mY/dJMcafuiHBO/rZfuQms2AEUECwBUyhYaqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgz2mY/dJMcafuiHBO/rZfuQms2AEUECwBUyhYaqk/img.png&quot; data-alt=&quot;Odoo models and fields&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgz2mY/dJMcafuiHBO/rZfuQms2AEUECwBUyhYaqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgz2mY%2FdJMcafuiHBO%2FrZfuQms2AEUECwBUyhYaqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;odoo-models-and-fields-architecture-overview&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;1123&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;1123&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Odoo models and fields&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQmQY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQmgY&quot; data-hveid=&quot;0&quot;&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# school_student.py - 학생 정보를 관리하는 기본 모델 예시
from odoo import models, fields

class Student(models.Model):
    _name = &quot;school.student&quot;
    _description = &quot;Student Information&quot;

    name = fields.Char(string=&quot;학생 이름&quot;, required=True)
    age = fields.Integer(string=&quot;나이&quot;)
    active = fields.Boolean(string=&quot;재학 여부&quot;, default=True)
    enrollment_date = fields.Date(string=&quot;등록일&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;모델 정의 핵심 속성 분석&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;7,0,0,0&quot;&gt;_name: Odoo 데이터베이스 내에서 해당 모델을 식별하는 고유 테크니컬 네임입니다 (self.env['school.student'] 형태로 ORM에서 호출)&lt;/span&gt;&lt;span data-path-to-node=&quot;7,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,0,0,2&quot;&gt;. 점(.) 구분자는 PostgreSQL 실제 테이블 생성 시 밑줄(_)로 자동 변환되어 school_student 테이블이 생성됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;_description: 관리자 화면 및 감사 로그(Audit Trail)에 표시되는 모델의 사용자 친화적 명칭입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;7,2,0,0&quot;&gt;models.Model: PostgreSQL 데이터베이스에 테이블이 영구 저장되는 기본 영속 모델 클래스입니다 (TransientModel, AbstractModel과 구분)&lt;/span&gt;&lt;span data-path-to-node=&quot;7,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;4,0,1,1,0&quot;&gt;&amp;nbsp;  &lt;a href=&quot;https://wegosolution.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[이전 글: Odoo ORM 기본 개념 및 핵심 메서드 7가지]&lt;/a&gt;&lt;/span&gt;&lt;a href=&quot;https://wegosolution.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span data-path-to-node=&quot;4,0,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size26&quot;&gt;2. Odoo 기본 필드 타입 (Basic Field Types) 사양&lt;/h2&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-220&quot; data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;10,0&quot;&gt;Odoo 필드는 PostgreSQL의 데이터 타입(Data Type)과 직접 매핑되며, 유효성 검증 및 웹 UI 렌더링 방식을 제어합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%; text-align: center;&quot;&gt;&lt;b&gt;필드 타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%; text-align: center;&quot;&gt;&lt;b&gt;PostgreSQL 매핑 타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%; text-align: center;&quot;&gt;&lt;b&gt;주요 기술 옵션 및 설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%; text-align: center;&quot;&gt;&lt;b&gt;실무 코드 예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;Char&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;VARCHAR&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,1,2,0,0&quot;&gt;단일 행 텍스트, size, trim 옵션 지원&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Char(required=True, index=True)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;Text&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;TEXT&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,2,2,0,0&quot;&gt;다중 행 장문 텍스트, 개행 지원&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Text(string=&quot;비고 메모&quot;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;Integer&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,3,2,0,0&quot;&gt;32비트 정수형 숫자&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Integer(default=0)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0,0&quot;&gt;Float&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,4,1,0&quot;&gt;NUMERIC / FLOAT8&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,4,2,0,0&quot;&gt;부동소수점 및 통화 단위 소수, digits 정밀도 지정&lt;/span&gt;&lt;span data-path-to-node=&quot;11,4,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Float(digits=(16, 2))&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,5,0,0&quot;&gt;Boolean&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,5,1,0&quot;&gt;BOOLEAN&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,5,2,0,0&quot;&gt;참/거짓 값 (체크박스 UI)&lt;/span&gt;&lt;span data-path-to-node=&quot;11,5,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Boolean(default=True)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,6,0,0&quot;&gt;Date&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,6,1,0&quot;&gt;DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,6,2,0,0&quot;&gt;연&amp;middot;월&amp;middot;일 날짜 데이터 (시간 미포함)&lt;/span&gt;&lt;span data-path-to-node=&quot;11,6,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Date(default=fields.Date.today)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,7,0,0&quot;&gt;Datetime&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,7,1,0&quot;&gt;TIMESTAMP WITHOUT TIME ZONE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,7,2,0,0&quot;&gt;UTC 기준 저장 날짜/시간 (UI에서 로컬 타임존 변환)&lt;/span&gt;&lt;span data-path-to-node=&quot;11,7,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Datetime(default=fields.Datetime.now)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;&lt;span data-path-to-node=&quot;11,8,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,8,0,0&quot;&gt;Selection&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.3023%;&quot;&gt;&lt;span data-path-to-node=&quot;11,8,1,0&quot;&gt;VARCHAR&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 35.2326%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;11,8,2,0,0&quot;&gt;사전 정의된 Key-Value 튜플 목록 중 단일 선택 드롭다운&lt;/span&gt;&lt;span data-path-to-node=&quot;11,8,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.3488%;&quot;&gt;&lt;span&gt;fields.Selection([('draft','임시'),('done','완료')])&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size26&quot;&gt;3. 관계형 필드 타입 3종 (Relational Fields) 완벽 비교&lt;/h2&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-237&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot;&gt;관계형 필드는 관계형 데이터베이스(RDBMS)의 외래키(Foreign Key) 제약 조건과 조인(JOIN) 테이블 관계를 객체 지향적으로 구성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt;① Many2one (다대일 외래키 연결)&lt;/h3&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-238&quot; data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;16,0&quot;&gt;다수의 현재 모델 레코드가 대상 모델의 단일 레코드를 참조하는 관계입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;16,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;16,2&quot;&gt;. 데이터베이스 레벨에서 대상 테이블을 가리키는 &lt;b data-index-in-node=&quot;27&quot; data-path-to-node=&quot;16,2&quot;&gt;Foreign Key(FK) 컬럼&lt;/b&gt;이 생성됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQsQY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 주문(Order) 모델에서 단일 고객(Partner)을 참조
partner_id = fields.Many2one(
    comodel_name='res.partner',
    string='Customer',
    ondelete='restrict',
    required=True
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;동작 원리&lt;/b&gt;: 실제 PostgreSQL 테이블에는 partner_id INT REFERENCES res_partner(id) 외래키 컬럼이 추가됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;② One2many (일대다 가상 관계)&lt;/h3&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-239&quot; data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;20,0&quot;&gt;단일 레코드가 대상 모델의 여러 레코드를 하위 목록으로 참조하는 관계입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,2&quot;&gt;. 물리적 컬럼이 생성되지 않는 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;20,2&quot;&gt;가상(Virtual) 필드&lt;/b&gt;이며, 대상 모델의 Many2one 필드를 반대편에서 참조(Inverse)합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQswY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 고객(Partner) 모델에서 자신의 주문 목록(sale.order)을 역방향 조회
order_ids = fields.One2many(
    comodel_name='sale.order',
    inverse_name='partner_id',
    string='Sales Orders'
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;22,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0,0&quot;&gt;동작 원리&lt;/b&gt;: sale.order 테이블에 존재하는 partner_id를 기반으로 ORM이 서브쿼리를 실행하여 목록을 레코드셋으로 바인딩합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;22,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;22,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size23&quot;&gt;③ Many2many (다대다 양방향 연결)&lt;/h3&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-241&quot; data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;24,0&quot;&gt;여러 레코드가 서로 다대다 관계로 자유롭게 연결되는 구조입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;24,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;24,2&quot;&gt;. RDBMS 정규화 원칙에 따라 Odoo가 두 테이블의 ID를 관리하는 중간 조인 테이블(Intermediate Table)을 자동 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQtgY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 학생(Student) 모델에서 수강 과목(course.course) 다대다 매핑
course_ids = fields.Many2many(
    comodel_name='course.course',
    relation='student_course_rel',  # 중간 테이블 명 (선택)
    column1='student_id',           # 현재 모델 FK 컬럼 (선택)
    column2='course_id',            # 대상 모델 FK 컬럼 (선택)
    string='Courses'
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size26&quot;&gt;4. 관계형 필드 선택 및 아키텍처 판별 기준&lt;/h2&gt;
&lt;p id=&quot;p-rc_7e6b10a45a56827f-242&quot; data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;28,0&quot;&gt;실무에서 데이터 스키마를 구성할 때는 데이터의 소유권과Cardinality(기수성)에 따라 필드를 정의해야 합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;28,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQuAY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;[Many2one]  Order N ─────── 1 Customer      (물리 FK 생성)
[One2many]  Customer 1 ────&amp;middot;&amp;middot;&amp;middot; N Orders     (역참조 가상 필드)
[Many2many] Student N ─────&amp;middot;&amp;middot;&amp;middot; N Course     (중간 연결 테이블 자동 생성)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;30,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0,0&quot;&gt;단일 외래키 참조가 필요한 경우&lt;/b&gt;: Many2one 사용 (예: 주문의 담당자, 전표의 통화 단위)&lt;/span&gt;&lt;span data-path-to-node=&quot;30,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;30,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,1,0,0&quot;&gt;부모-자식(Master-Detail) 구조의 하위 라인을 묶을 경우&lt;/b&gt;: One2many 사용 (예: 세금계산서의 품목 상세 라인)&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;30,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,2,0,0&quot;&gt;태그, 권한 그룹, 다중 카테고리 분류가 필요한 경우&lt;/b&gt;: Many2many 사용 (예: 고객 태그, 수강 과목 등록)&lt;/span&gt;&lt;span data-path-to-node=&quot;30,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>4. Odoo 기술 &amp;amp; 개발(Tech, Architecture)/커스텀 모듈 개발 &amp;amp; API</category>
      <category>ERP</category>
      <category>Odoo</category>
      <category>odoofields</category>
      <category>odoomodel</category>
      <category>odoo개발</category>
      <category>PostgreSQL</category>
      <category>Python</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/19</guid>
      <comments>https://wegosolution.tistory.com/19#entry19comment</comments>
      <pubDate>Sat, 29 Aug 2026 19:05:40 +0900</pubDate>
    </item>
    <item>
      <title>SQL 없이 데이터 다루는 Odoo ORM 기초: 실무 핵심 메서드 7가지 완벽 정리</title>
      <link>https://wegosolution.tistory.com/18</link>
      <description>&lt;p id=&quot;p-rc_e6dadc065c247f35-45&quot; data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;1,0&quot;&gt;Odoo 개발 및 커스터마이징을 시작할 때 가장 핵심이 되는 기술은 ORM(Object Relational Mapping)입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,2&quot;&gt;. ORM을 활용하면 복잡한 PostgreSQL SQL 쿼리를 직접 작성하지 않고도 파이썬(Python) 객체 문법을 통해 데이터베이스를 직관적이고 안전하게 조작할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;1,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;1,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;1. Odoo ORM 동작 구조: Python과 PostgreSQL 사이의 통역사&lt;/h2&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-46&quot; data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;3,0&quot;&gt;&lt;b&gt;Odoo ORM은 파이썬 비즈니스 로직 코드와 백엔드 PostgreSQL 데이터베이스 사이에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;SQL 변환 통역사 역할&lt;/span&gt;을 담당하는 계층&lt;/b&gt;입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;3,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;3,2&quot;&gt;. 개발자가 모델 기반 파이썬 코드를 실행하면 ORM이 이를 최적화된 SQL로 변환하여 실행하고, 결과를 파이썬 객체인 &lt;b&gt;레코드셋(Recordset)으로 반환&lt;/b&gt;합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;3,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;3,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.55814%; text-align: center;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.2791%; text-align: center;&quot;&gt;&lt;b&gt;처리 계층&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.0465%; text-align: center;&quot;&gt;&lt;b&gt;주요 역할 및 기술적 설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.55814%; text-align: center;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;①&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.2791%;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,1,0&quot;&gt;Python Code&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.0465%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;4,1,2,0,0&quot;&gt;self.env['model.name'].method() 형식으로 작성되는 비즈니스 로직&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1,2,0,2&quot;&gt;. 데이터 처리 의도를 파이썬 문법으로 전달&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1,2,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1,2,0,4&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.55814%; text-align: center;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;②&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.2791%;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,1,0&quot;&gt;Odoo ORM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.0465%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;4,2,2,0,0&quot;&gt;파이썬 코드를 분석하여 안전한 PostgreSQL SQL 쿼리로 자동 변환하고 트랜잭션 및 보안 권한을 관리하는 미들웨어&lt;/span&gt;&lt;span data-path-to-node=&quot;4,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,2,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.55814%; text-align: center;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;③&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.2791%;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,1,0&quot;&gt;PostgreSQL Database&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.0465%;&quot;&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;4,3,2,0,0&quot;&gt;클라우드 인프라 및 서버 환경에 저장된 실제 관계형 테이블&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3,2,0,2&quot;&gt;. 생성된 SQL이 최종 실행되는 스토리지 계층&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3,2,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3,2,0,4&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-50&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;직접 SQL을 실행하지 않으므로 문법 오류를 원천 차단하며, 파라미터 바인딩을 통해 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b data-index-in-node=&quot;47&quot; data-path-to-node=&quot;5,0&quot;&gt;SQL 인젝션(SQL Injection) 취약점을 완벽히 방어&lt;/b&gt;&lt;/span&gt;합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1758&quot; data-origin-height=&quot;986&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmY6w/dJMcaiLg8sK/La0FTkMdrBPND6Jr1IlZ2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmY6w/dJMcaiLg8sK/La0FTkMdrBPND6Jr1IlZ2k/img.png&quot; data-alt=&quot;Odoo ORM Basics&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmY6w/dJMcaiLg8sK/La0FTkMdrBPND6Jr1IlZ2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmY6w%2FdJMcaiLg8sK%2FLa0FTkMdrBPND6Jr1IlZ2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;odoo-orm-architecture-and-common-methods&quot; loading=&quot;lazy&quot; width=&quot;1758&quot; height=&quot;986&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1758&quot; data-origin-height=&quot;986&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Odoo ORM Basics&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;2. 실무 필수 Odoo ORM 메서드 7가지&lt;/h2&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-51&quot; data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;8,0&quot;&gt;Odoo ORM 메서드는 데이터 0건, 1건, 다건 모두 동일한 인터페이스로 처리할 수 있는 레코드셋(Recordset)을 기반으로 동작합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;8,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;8,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;①&lt;/span&gt; create(vals): 신규 레코드 생성&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-52&quot; data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;10,0&quot;&gt;새로운 데이터 레코드를 생성할 때 사용하는 메서드입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2&quot;&gt;. 인자로는 필드명과 값이 매핑된 딕셔너리를 전달합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQ8gM&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;# res.partner 모델에 신규 파트너 생성
new_partner = self.env['res.partner'].create({
    'name': 'Amit',
    'email': 'amit@example.com'
})
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;12,0,0,0&quot;&gt;반환값: 방금 생성된 단일 레코드셋 객체가 반환되어 후속 필드 접근이 즉시 가능합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;②&lt;/span&gt; search(domain): 조건 검색 (SQL WHERE 대체)&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-54&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot;&gt;조건식(Domain) 리스트를 기반으로 데이터베이스에서 조건에 일치하는 데이터를 조회합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQ9QM&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# state가 'sale'인 확정 판매주문 조회 (AND 조건 기본 적용)
confirmed_orders = self.env['sale.order'].search([('state', '=', 'sale')])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;16,0,0,0&quot;&gt;도메인 구조: [(필드명, 연산자, 비교값)] 형태의 튜플 리스트로 작성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;16,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;16,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;③&lt;/span&gt; browse(ids): ID 기반 직접 인메모리 조회&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-56&quot; data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;18,0&quot;&gt;이미 알고 있는 Primary Key(ID) 값을 바탕으로 데이터베이스 조회 없이 레코드셋을 즉각 생성합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQ-AM&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# ID 1, 2, 3번 파트너 레코드셋 인스턴스화
partners = self.env['res.partner'].browse([1, 2, 3])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;20,0,0,0&quot;&gt;특징: 실제 데이터 조회는 필드 값에 접근하는 시점(Lazy Loading)에 발생하므로 메모리 및 쿼리 효율이 뛰어납니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;④&lt;/span&gt; write(vals): 레코드 일괄 수정&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-58&quot; data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;22,0&quot;&gt;기존 레코드셋의 필드 값을 딕셔너리 형태로 전달받아 일괄 갱신(UPDATE)합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;22,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;22,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQ-wM&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;# 레코드셋 내 모든 레코드의 name 필드 일괄 변경
record.write({'name': 'New Name'})
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;⑤&lt;/span&gt; unlink(): 레코드 영구 삭제&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-59&quot; data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;25,0&quot;&gt;데이터베이스에서 해당 레코드셋을 완전히 제거(DELETE)합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;25,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;25,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQ_QM&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;# 레코드 삭제 실행
record.unlink()
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;27,0,0,0&quot;&gt;엔지니어링 팁: 데이터 정합성과 감사(Audit) 관리를 위해 실무에서는 unlink() 대신 active = False 처리나 상태 변경 방식을 권장합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;27,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;⑥&lt;/span&gt; mapped(field_name): 특정 필드값 추출&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-61&quot; data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;29,0&quot;&gt;레코드셋을 순회하는 별도의 for 루프 없이 특정 필드의 값만 리스트 형태로 빠르게 추출합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;29,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQgAQ&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 모든 파트너의 이메일 목록 리스트 반환 (점 표기법으로 Relation 탐색 가능)
email_list = partners.mapped('email')
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;31&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;⑦&lt;/span&gt; filtered(func): 메모리 내 조건 필터링&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-62&quot; data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;32,0&quot;&gt;데이터베이스에 추가 쿼리를 보내지 않고, 이미 메모리에 로드된 레코드셋을 파이썬 람다(Lambda) 함수로 걸러냅니다&lt;/span&gt;&lt;span data-path-to-node=&quot;32,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;32,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQggQ&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 메모리 상에서 회사(is_company=True)인 파트너만 필터링
company_records = partners.filtered(lambda p: p.is_company)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;34&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;34&quot; data-ke-size=&quot;size26&quot;&gt;3. ORM 쿼리 분석 및 레코드셋 체이닝(Chaining)&lt;/h2&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-63&quot; data-path-to-node=&quot;35&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;35,0&quot;&gt;&quot;확정된(sale) 주문 데이터 조회&quot; 작업 시 ORM이 실행되는 내부 구조는 다음과 같습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;35,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;35,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQhAQ&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;pf&quot;&gt;&lt;code&gt;self.env['sale.order'].search([('state', '=', 'sale')])
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;37&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,0,0,0&quot;&gt;self.env: 사용자 ID, 보안 컨텍스트, DB 커서 환경이 포함된 실행 환경 객체입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;37,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,1,0,0&quot;&gt;['sale.order']: 데이터 조작 대상 모델의 기술적 명칭(Model Name)입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;37,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,2,0,0&quot;&gt;.search([('state', '=', 'sale')]): PostgreSQL 내부적으로 SELECT * FROM sale_order WHERE state = 'sale' 형태의 쿼리로 안전하게 변환되어 실행됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;37,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;38&quot; data-ke-size=&quot;size23&quot;&gt;메서드 체이닝 예시&lt;/h3&gt;
&lt;p id=&quot;p-rc_e6dadc065c247f35-67&quot; data-path-to-node=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;39,0&quot;&gt;레코드셋의 특징을 활용하면 복잡한 가공도 파이썬 한 줄 코드로 간결하게 처리할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;39,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;39,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwj9lLX2v8WWAxUAAAAAHQAAAAAQiQQ&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 회사(Company)인 파트너들의 이름 목록만 한 줄로 추출
company_names = partners.filtered(lambda p: p.is_company).mapped('name')
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;41&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;핵심 메서드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;실행 위치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;41,1,0,0&quot;&gt;create / search / write / unlink&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;41,1,1,0&quot;&gt;PostgreSQL (SQL 쿼리)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;41,1,2,0,0&quot;&gt;데이터 영속성 관리 및 DB I/O 수행&lt;/span&gt;&lt;span data-path-to-node=&quot;41,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;41,2,0,0&quot;&gt;mapped / filtered&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;41,2,1,0&quot;&gt;Python Application (In-Memory)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;41,2,2,0,0&quot;&gt;메모리 상의 레코드셋 고속 가공 및 변환&lt;/span&gt;&lt;span data-path-to-node=&quot;41,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>4. Odoo 기술 &amp;amp; 개발(Tech, Architecture)/커스텀 모듈 개발 &amp;amp; API</category>
      <category>ERP</category>
      <category>Odoo</category>
      <category>odooerp</category>
      <category>odooorm</category>
      <category>Postresql</category>
      <category>Python</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/18</guid>
      <comments>https://wegosolution.tistory.com/18#entry18comment</comments>
      <pubDate>Sat, 29 Aug 2026 18:34:29 +0900</pubDate>
    </item>
    <item>
      <title>[Odoo 아키텍처 가이드] JSON부터 OWL 프레임워크, 3-Tier 아키텍처 및 확장 전략 총정리</title>
      <link>https://wegosolution.tistory.com/17</link>
      <description>&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;3&quot;&gt;위고솔루션(wegosolution)&lt;/b&gt; 기술 블로그입니다.&lt;/p&gt;
&lt;p id=&quot;p-rc_466a7ad9900feccb-109&quot; data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;4,0&quot;&gt;엔터프라이즈 오픈소스 ERP의 표준으로 자리 잡은 &lt;b data-index-in-node=&quot;28&quot; data-path-to-node=&quot;4,0&quot;&gt;Odoo&lt;/b&gt;는 뛰어난 모듈성과 유연한 확장성을 자랑합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;4,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,2&quot;&gt;. 하지만 Odoo 기반의 시스템을 안정적으로 구축하고 커스터마이징하기 위해서는 그 근간이 되는 웹 기술 표준과 내부 아키텍처를 정확히 이해해야 합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;4,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;4,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_466a7ad9900feccb-110&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;5,0&quot;&gt;이번 포스팅에서는 &lt;b data-index-in-node=&quot;10&quot; data-path-to-node=&quot;5,0&quot;&gt;JSON의 기본 및 Odoo 내 활용, 3계층(Three-Tier) 아키텍처, 멀티 랭귀지 구조의 이유, 비즈니스 확장 전략&lt;/b&gt;까지 핵심 내용을 체계적으로 정리해 드립니다&lt;/span&gt;&lt;span data-path-to-node=&quot;5,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;5,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZsFIT/dJMcadi2m7d/OCmGZ0keaLoqrkSZZtwmik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZsFIT/dJMcadi2m7d/OCmGZ0keaLoqrkSZZtwmik/img.png&quot; data-alt=&quot;Odoo_Architecture&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZsFIT/dJMcadi2m7d/OCmGZ0keaLoqrkSZZtwmik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZsFIT%2FdJMcadi2m7d%2FOCmGZ0keaLoqrkSZZtwmik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;512&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Odoo_Architecture&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;1. Odoo 3계층(Three-Tier) 개발 아키텍처&lt;/h2&gt;
&lt;p id=&quot;p-rc_466a7ad9900feccb-119&quot; data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,0&quot;&gt;Odoo는 프론트엔드, 백엔드(애플리케이션 서버), 데이터베이스가 명확히 분리된 &lt;b data-index-in-node=&quot;45&quot; data-path-to-node=&quot;15,0&quot;&gt;3-Tier 구조&lt;/b&gt;를 갖추고 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;1.1 Front-End (Web Client)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;17,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0,0&quot;&gt;OWL (Odoo Web Library)&lt;/b&gt;: Odoo SA가 자체 개발한 초경량 컴포넌트 기반 JavaScript 프레임워크 (React/Vue와 유사한 가상 DOM 구조)&lt;/span&gt;&lt;span data-path-to-node=&quot;17,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;17,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0,0&quot;&gt;QWeb / XML Views&lt;/b&gt;: Form, List/Tree, Kanban, Pivot, Gantt 등의 선언적 화면 구조 정의&lt;/span&gt;&lt;span data-path-to-node=&quot;17,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;17,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0,0&quot;&gt;SCSS / Bootstrap&lt;/b&gt;: 엔터프라이즈 테마 및 반응형 UI 스타일링&lt;/span&gt;&lt;span data-path-to-node=&quot;17,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;1.2 Back-End (Odoo Application Server - Python)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0,0&quot;&gt;Core Framework&lt;/b&gt;: ORM, 접근 권한/보안 규칙(Access Rights/Record Rules), 스케줄러(Cron), 표준 API 엔진&lt;/span&gt;&lt;span data-path-to-node=&quot;19,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0,0&quot;&gt;Modular System&lt;/b&gt;: Base(영업&amp;middot;구매&amp;middot;회계), Manufacturing(MRP), Website/E-commerce, Custom Modules로 구성되며 상속(_inherit)을 통한 무결점 확장 지원&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;19,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,2,0,0&quot;&gt;Controller Layer&lt;/b&gt;: HTTP 요청 및 JSON-RPC 통신 라우팅, 인증(auth), ORM 메서드 실행 후 결과 반환&lt;/span&gt;&lt;span data-path-to-node=&quot;19,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;1.3 Database (PostgreSQL)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;21,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0,0&quot;&gt;데이터 무결성&lt;/b&gt;: 엄격한 ACID 트랜잭션을 보장하여 재고 및 회계 수불의 정확성 유지&lt;/span&gt;&lt;span data-path-to-node=&quot;21,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;21,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;JSONB 지원&lt;/b&gt;: 비정형 동적 필드 및 유연한 속성 데이터를 인덱싱과 함께 고속 처리&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size26&quot;&gt;2. Odoo가 다중 언어(Multi-Language)로 구성된 이유&lt;/h2&gt;
&lt;p id=&quot;p-rc_466a7ad9900feccb-128&quot; data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;24,0&quot;&gt;Odoo는 각 계층의 고유한 요구사항에 최적화된 도구를 적용하는 &lt;b data-index-in-node=&quot;36&quot; data-path-to-node=&quot;24,0&quot;&gt;'적재적소(Right Tool for the Right Job)'&lt;/b&gt; 원칙에 따라 설계되었습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;24,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;24,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;25&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;언어 및 기술&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;담당 계층&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;채택 이유 및 핵심 역할&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0,0&quot;&gt;JavaScript (OWL)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,1,0&quot;&gt;Front-End&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;25,1,2,0,0&quot;&gt;브라우저 표준 언어, 빠른 가상 DOM 렌더링 및 UI 반응성 확보&lt;/span&gt;&lt;span data-path-to-node=&quot;25,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,2,0,0&quot;&gt;Python&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,1,0&quot;&gt;Back-End&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;25,2,2,0,0&quot;&gt;높은 개발 생산성, 깔끔한 문법, 강력한 객체지향/메타프로그래밍 기반 모듈 상속 지원&lt;/span&gt;&lt;span data-path-to-node=&quot;25,2,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,3,0,0&quot;&gt;XML (QWeb)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,1,0&quot;&gt;UI Layout&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;25,3,2,0,0&quot;&gt;XPath 문법을 통한 선언형 뷰 상속 및 화면 요소의 손쉬운 삽입&amp;middot;수정&lt;/span&gt;&lt;span data-path-to-node=&quot;25,3,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,4,0,0&quot;&gt;PostgreSQL&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,4,1,0&quot;&gt;Database&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;25,4,2,0,0&quot;&gt;엔터프라이즈급 트랜잭션 무결성 보장, 대용량 관계형 쿼리 최적화 및 JSONB 인덱싱&lt;/span&gt;&lt;span data-path-to-node=&quot;25,4,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size26&quot;&gt;3. 통신 프로토콜 비교: JSON-RPC vs XML-RPC&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;28&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;28,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,0,0,0&quot;&gt;JSON-RPC&lt;/b&gt;: JSON 기반의 경량 프로토콜입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;28,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;28,0,0,2&quot;&gt;. 데이터 페이로드가 작고 브라우저(OWL) 및 모바일 환경에서 직렬화/역직렬화가 매우 빠릅니다&lt;/span&gt;&lt;span data-path-to-node=&quot;28,0,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;28,0,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;28,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,0,0&quot;&gt;XML-RPC&lt;/b&gt;: XML 태그 기반의 RPC 표준으로, 데이터 타입이 엄격하지만 페이로드가 큽니다&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,0,2&quot;&gt;. 주로 다양한 외부 레거시 시스템 연동 라이브러리와의 호환성에 사용됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;40&quot; data-ke-size=&quot;size26&quot;&gt;4. 오픈소스 프레임워크 기반 비즈니스 전략&lt;/h2&gt;
&lt;p id=&quot;p-rc_466a7ad9900feccb-146&quot; data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;41,0&quot;&gt;Odoo나 OWL과 같은 오픈소스 프레임워크를 기반으로 독자적인 비즈니스 솔루션을 전개할 때는 다음 사항을 전략적으로 검토해야 합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;41,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;41,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;42&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;42,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;42,0,0,0&quot;&gt;라이선스 준수 (LGPL-3.0 등)&lt;/b&gt;: 프레임워크 코어 자체를 수정하여 재배포하는 경우 해당 수정본은 공개해야 하지만, 그 위에 독자적으로 개발한 비즈니스 애플리케이션 및 모듈은 비공개(Proprietary)로 상용 판매가 가능합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;42,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;42,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;42,1,0&quot;&gt;수익화 모델 다각화&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;42,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;42,1,1,0,0,0&quot;&gt;맞춤형 구축 컨설팅 및 SI&lt;/span&gt;&lt;span data-path-to-node=&quot;42,1,1,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;42,1,1,1,0,0&quot;&gt;SLA 기술 지원 및 유지보수&lt;/span&gt;&lt;span data-path-to-node=&quot;42,1,1,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;42,1,1,2,0,0&quot;&gt;클라우드 호스팅 / SaaS 구독 서비스&lt;/span&gt;&lt;span data-path-to-node=&quot;42,1,1,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;42,1,1,3,0,0&quot;&gt;산업군별 특화 독점 애드온(Add-on) 판매&lt;/span&gt;&lt;span data-path-to-node=&quot;42,1,1,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;42,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;42,2,0,0&quot;&gt;하드포크(Hard Fork) 시 리소스 고려&lt;/b&gt;: 자체 프레임워크로 완전 분리할 경우 최신 보안 패치와 신규 기능을 내부 인력으로 지속 병합(Merge)해야 하는 유지보수 부담이 발생하므로 신중한 접근이 필요합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;42,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;42,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node=&quot;44&quot; data-ke-size=&quot;size23&quot;&gt;맺음말&lt;/h3&gt;
&lt;p id=&quot;p-rc_466a7ad9900feccb-153&quot; data-path-to-node=&quot;45&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;45,0&quot;&gt;Odoo의 3계층 아키텍처와 기술 스택은 높은 유연성과 엔터프라이즈급 안정성을 동시에 제공합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;45,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;45,2&quot;&gt;. 안정적인 ERP 구축을 위해서는 Low-Code(Studio) 도구와 코드 기반 커스텀 모듈 개발의 균형을 올바르게 맞추는 것이 핵심입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;45,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;45,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;46&quot; data-ke-size=&quot;size16&quot;&gt;Odoo 도입 컨설팅, 커스텀 모듈 개발 및 엔터프라이즈 아키텍처 구축에 대해 궁금하신 점이 있으시다면 언제든 &lt;b data-index-in-node=&quot;62&quot; data-path-to-node=&quot;46&quot;&gt;위고솔루션&lt;/b&gt;으로 문의해 주시기 바랍니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;46&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-path-to-node=&quot;46&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>4. Odoo 기술 &amp;amp; 개발(Tech, Architecture)/시스템 아키텍처 &amp;amp; 프레임워크</category>
      <category>ERP</category>
      <category>Odoo</category>
      <category>odoo architecture</category>
      <category>odooerp</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/17</guid>
      <comments>https://wegosolution.tistory.com/17#entry17comment</comments>
      <pubDate>Fri, 28 Aug 2026 16:09:24 +0900</pubDate>
    </item>
    <item>
      <title>SAP(10억+) vs 국내ERP(1억~5억) vs Odoo: 실제 구축 비용과 ROI 솔직 비교</title>
      <link>https://wegosolution.tistory.com/16</link>
      <description>&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6&quot;&gt;&quot;ERP 도입에 억 단위 예산을 썼는데, 현장에서는 여전히 엑셀을 씁니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_d48543dad44bbb52-39&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;중소벤처기업부 실태조사에 따르면 중소/중견기업의 제조/ERP 시스템 도입에는 평균 수억 원에서 10억 원 이상의 막대한 예산이 소요됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;문제는 회사의 규모와 실제 커스터마이징 요구도에 맞지 않는 고가 패키지를 선택했다가, &quot;비용은 억대로 들고 현장 적용은 실패하는 사례&quot;가 빈번하다는 점입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;국내 IT SI 시장의 실제 구축 견적 기준과 Odoo의 비용 구조를 명확한 수치로 비교해 드립니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size23&quot;&gt;1. 솔루션 등급별 실제 도입 비용 &amp;amp; 일정 비교&lt;/h3&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12&quot;&gt;(기준: 사용자 30~70인 규모, 생산/재고/물류 커스터마이징이 필요한 제조/유통 기업)&lt;/i&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.1863%;&quot; border=&quot;1&quot; data-path-to-node=&quot;13&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.8837%; text-align: center;&quot;&gt;&lt;b&gt;비교 항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.169%; text-align: center;&quot;&gt;&lt;b&gt;글로벌 엔터프라이즈 &lt;br /&gt;(SAP S/4HANA 등)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.6944%; text-align: center;&quot;&gt;&lt;b&gt;국내 중견 맞춤형&lt;br /&gt;(더존 iU 등)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.4605%; text-align: center;&quot;&gt;&lt;b&gt;오픈소스 맞춤형&lt;br /&gt;(Odoo)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;13,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0,0&quot;&gt;초기 구축 비용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.169%;&quot;&gt;&lt;span data-path-to-node=&quot;13,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,0&quot;&gt;최소 10억 ~ 수십억 원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.6944%;&quot;&gt;&lt;span data-path-to-node=&quot;13,1,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,2,0&quot;&gt;최소 1억 ~ 5억 원 선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.4605%;&quot;&gt;&lt;span data-path-to-node=&quot;13,1,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,3,0&quot;&gt;1,000만 ~ 8,000만 원 선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;13,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0,0&quot;&gt;라이선스/유지비&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.169%;&quot;&gt;&lt;span data-path-to-node=&quot;13,2,1,0&quot;&gt;연간 수천만 ~ 억 단위 (사용자별 고가)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.6944%;&quot;&gt;&lt;span data-path-to-node=&quot;13,2,2,0&quot;&gt;연간 수천만 원 (유저수/모듈별 과금)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.4605%;&quot;&gt;&lt;span data-path-to-node=&quot;13,2,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,3,0&quot;&gt;인당 월 $24~$30 수준 (전 모듈 포함)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;13,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,0,0&quot;&gt;구축 기간&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.169%;&quot;&gt;&lt;span data-path-to-node=&quot;13,3,1,0&quot;&gt;9개월 ~ 18개월 이상&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.6944%;&quot;&gt;&lt;span data-path-to-node=&quot;13,3,2,0&quot;&gt;4개월 ~ 8개월&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.4605%;&quot;&gt;&lt;span data-path-to-node=&quot;13,3,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,3,0&quot;&gt;2개월 ~ 4개월&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;13,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,0,0&quot;&gt;커스터마이징 비용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.169%;&quot;&gt;&lt;span data-path-to-node=&quot;13,4,1,0&quot;&gt;공수(M/D)당 100만~180만 원 선&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.6944%;&quot;&gt;&lt;span data-path-to-node=&quot;13,4,2,0&quot;&gt;공수(M/D)당 70만~120만 원 선&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.4605%;&quot;&gt;&lt;span data-path-to-node=&quot;13,4,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,3,0&quot;&gt;공수 대비 효율적 개발 가능 (파이썬 기반)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.8837%;&quot;&gt;&lt;span data-path-to-node=&quot;13,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,0,0&quot;&gt;5개년 총비용(TCO)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.169%;&quot;&gt;&lt;span data-path-to-node=&quot;13,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,1,0&quot;&gt;15억 ~ 30억 원+&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.6944%;&quot;&gt;&lt;span data-path-to-node=&quot;13,5,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,2,0&quot;&gt;2억 ~ 6억 원 선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.4605%;&quot;&gt;&lt;span data-path-to-node=&quot;13,5,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,3,0&quot;&gt;8,000만 ~ 1.5억 원 선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt;2. 왜 이런 비용 차이가 발생하는가?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;SAP (10억 이상):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;글로벌 표준 베스트 프랙티스를 제공하지만, 대형 컨설팅 펌의 투입 공수(M/D)와 고가의 코어 엔진 라이선스로 인해 &lt;/span&gt;&lt;b data-index-in-node=&quot;65&quot; data-path-to-node=&quot;16,0,1,0,0&quot;&gt;&lt;span&gt;연매출 1,000억 원 이상의 대기업&lt;/span&gt;&lt;/b&gt;&lt;span&gt;이 아니면 TCO를 감당하기 어렵습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;국내 중견 맞춤형 (1억 ~ 5억):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;국내 세무/회계/인사 연동은 가장 강력하지만, &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;16,1,1,0,0&quot;&gt;제조 현장의 특수 공정이나 맞춤형 재고 로직을 추가(커스터마이징)할 때마다 개발 비용이 급격히 상승&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0&quot;&gt;Odoo (1천 ~ 8천만 원):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CRM, 재고, 구매, 생산(MRP), 회계 등 전 모듈이 기본 패키지에 포함되어 있어 &lt;b data-index-in-node=&quot;49&quot; data-path-to-node=&quot;16,2,1,0,0&quot;&gt;별도의 모듈 추가 구매비가 없습니다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;글로벌 오픈소스 기반으로 구조가 유연해, 국내 환경에 맞춘 커스텀 개발을 진행해도 대기업용 ERP 대비 &lt;/span&gt;&lt;b data-index-in-node=&quot;58&quot; data-path-to-node=&quot;16,2,1,1,0&quot;&gt;&lt;span&gt;최대 70~80% 비용 절감&lt;/span&gt;&lt;/b&gt;&lt;span&gt;이 가능합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;3. Odoo 도입 시 실제 측정되는 정량적 성과 (ROI)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;도입 비용 회수 기간(Payback Period):&lt;/b&gt; 평균 8~14개월&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0&quot;&gt;재고 오차율:&lt;/b&gt; 기존 10% 내외, &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;19,1,0&quot;&gt;1.2% 이하&lt;/b&gt; (실시간 바코드/모바일 연동)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,2,0&quot;&gt;월말 결산 및 정산 공수:&lt;/b&gt; 영업일 기준 8일 소요 &lt;span data-index-in-node=&quot;28&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt; &lt;b data-index-in-node=&quot;40&quot; data-path-to-node=&quot;19,2,0&quot;&gt;1.5일로 약 80% 단축&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,3,0&quot;&gt;생산/발주 리드타임:&lt;/b&gt; BOM 자동 전개 및 발주 최적화로 &lt;b data-index-in-node=&quot;32&quot; data-path-to-node=&quot;19,3,0&quot;&gt;평균 30~40% 단축&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size23&quot;&gt;4. Odoo 도입 전 반드시 체크해야 할 점&lt;/h3&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;Odoo의 가성비가 압도적이지만, &lt;b data-index-in-node=&quot;19&quot; data-path-to-node=&quot;22&quot;&gt;한국형 전자세금계산서 연동, 국내 회계 표준 반영, 국내 제조 실무 UI 최적화&lt;/b&gt;가 전제되지 않으면 실패합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;따라서 초기 구축비 10억의 SAP나 3억의 패키지 ERP 대신 Odoo를 선택할 때는 &lt;b data-index-in-node=&quot;49&quot; data-path-to-node=&quot;23&quot;&gt;&quot;국내 제조/물류 실무를 이해하고 커스텀 모듈을 안정적으로 구축해 줄 전문 파트너사&quot;&lt;/b&gt; 선정이 핵심입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>1. Odoo Insight (개요)/Odoo란? (도입 장점, 특징)</category>
      <category>ERP</category>
      <category>ERP도입비용</category>
      <category>ERP비교</category>
      <category>Odoo</category>
      <category>odooerp</category>
      <category>위고솔루션</category>
      <category>중소기업ERP</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/16</guid>
      <comments>https://wegosolution.tistory.com/16#entry16comment</comments>
      <pubDate>Wed, 26 Aug 2026 13:36:39 +0900</pubDate>
    </item>
    <item>
      <title>[Odoo ERP] 어디서부터 시작할까? 무료로 배우는 Odoo 교육 자료/강의 총정리</title>
      <link>https://wegosolution.tistory.com/15</link>
      <description>&lt;p id=&quot;p-rc_a9721921c79a15ce-69&quot; data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;6,0&quot;&gt;Odoo(오두)는 CRM, 회계, 재고관리, 제조(MRP), 프로젝트 관리 등 수십 개의 업무 모듈을 하나로 통합한 강력한 &lt;b data-index-in-node=&quot;69&quot; data-path-to-node=&quot;6,0&quot;&gt;오픈소스 ERP&lt;/b&gt;입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2&quot;&gt;. 커뮤니티 버전은 소스코드가 무료로 공개되어 있고&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4&quot;&gt;, 양질의 공식 문서와 학습 콘텐츠도 무료로 이용할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;6,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,6&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-70&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;7,0&quot;&gt;하지만 자료가 여러 채널에 흩어져 있어 처음 접할 때 막막함을 느끼기 쉽습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,2&quot;&gt;. 오늘은 현업 실무자부터 커스터마이징을 고민하는 개발자까지 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;7,2&quot;&gt;비용 부담 없이 바로 활용할 수 있는 Odoo 무료 학습 자료&lt;/b&gt;를 한곳에 모아 정리해 드립니다&lt;/span&gt;&lt;span data-path-to-node=&quot;7,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;odoo_study.png&quot; data-origin-width=&quot;1779&quot; data-origin-height=&quot;1221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFHuDm/dJMcaasXL3A/4MboOYKsXxZCcyOazMhER1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFHuDm/dJMcaasXL3A/4MboOYKsXxZCcyOazMhER1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFHuDm/dJMcaasXL3A/4MboOYKsXxZCcyOazMhER1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFHuDm%2FdJMcaasXL3A%2F4MboOYKsXxZCcyOazMhER1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1779&quot; height=&quot;1221&quot; data-filename=&quot;odoo_study.png&quot; data-origin-width=&quot;1779&quot; data-origin-height=&quot;1221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9&quot;&gt;1. 공식 문서: 가장 정확한 1차 자료&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-71&quot; data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;10,0&quot;&gt;Odoo 학습의 기준이 되는 곳은 공식 문서(&lt;a href=&quot;https://www.odoo.com/documentation&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQwAM&quot; data-hveid=&quot;0&quot;&gt;odoo.com/documentation&lt;/a&gt;)입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2&quot;&gt;. 크게 두 가지 트랙으로 나뉩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;11,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0,0&quot;&gt;사용자(Applications) 문서&lt;/b&gt;: 영업, 회계, 재고, 제조 등 각 모듈의 화면 구성과 설정 방법을 설명합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,0,0,2&quot;&gt;. 실무 중 특정 기능이나 버튼의 역할을 확인할 때 필수적입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,0,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,0,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;개발자(Developer) 문서&lt;/b&gt;: ORM, 모듈 구조, 뷰(XML), API 연동 등 커스터마이징에 필요한 기술 문서를 제공합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,0,2&quot;&gt;. 특히 &lt;a href=&quot;https://www.odoo.com/documentation/19.0/developer/tutorials.html&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQwwM&quot; data-hveid=&quot;0&quot;&gt;Developer Tutorials&lt;/a&gt;는 서버 프레임워크 기초부터 나만의 모듈 만들기까지 단계별 실습이 가능합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-path-to-node=&quot;12&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-74&quot; data-path-to-node=&quot;12,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;12,0,0&quot;&gt;  &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;12,0,0&quot;&gt;Tip&lt;/b&gt;: 버전별(14.0 ~ 19.0 등)로 화면 UI와 API 차이가 있으므로, 반드시 사내에서 사용하는 버전에 맞춰 확인하세요&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,0,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14&quot;&gt;2. Odoo eLearning: 영상 기반 자체 학습 플랫폼&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-75&quot; data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;15,0&quot;&gt;&lt;a href=&quot;https://www.odoo.com/slides&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQxgM&quot; data-hveid=&quot;0&quot;&gt;odoo.com/slides&lt;/a&gt;는 Odoo 공식 영상 강의 플랫폼입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;15,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;15,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;16,0,0,0&quot;&gt;입문자를 위한 'Getting Started' 트랙부터 회계, 재고, 노코드 툴(스튜디오) 등 실무 트랙이 체계적으로 구성되어 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;16,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;16,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;상당수 강좌를 무료로 수강할 수 있으며, 수강 완료 후 포인트를 쌓는 게이미피케이션 요소가 적용되어 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;16,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;16,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18&quot;&gt;3. 설치 없이 웹에서 바로 실습하기&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-78&quot; data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;19,0&quot;&gt;로컬 환경에 서버를 구축하지 않고도 웹 브라우저에서 바로 기능을 테스트할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;19,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;19,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;20,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0,0&quot;&gt;&lt;a href=&quot;https://www.odoo.com/trial&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQywM&quot; data-hveid=&quot;0&quot;&gt;Odoo 무료 체험판&lt;/a&gt;&lt;/b&gt;: 카드 등록 없이 견적서 작성, 판매 주문, 인보이스 발행 등 기본 비즈니스 흐름을 직접 체험해 볼 수 있어 도입 검토 담당자에게 적합합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;20,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0,0&quot;&gt;&lt;a href=&quot;https://runbot.odoo.com/&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQzQM&quot; data-hveid=&quot;0&quot;&gt;Runbot&lt;/a&gt;&lt;/b&gt;: Odoo 공식 커밋마다 자동 생성되는 임시 인스턴스로, 최신 버전의 동작을 미리 검증하려는 개발자에게 유용합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22&quot;&gt;4. 실무 흐름을 익히는 유튜브 채널&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;23,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0,0&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@Odoo&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQzwM&quot; data-hveid=&quot;0&quot;&gt;Odoo 공식 채널 (@Odoo)&lt;/a&gt;&lt;/b&gt;: 신규 버전 하이라이트 영상, 기능 데모, 웨비나 녹화본을 통해 Odoo의 최신 로드맵과 표준 기능을 파악하기 좋습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;23,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;23,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;23,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0,0&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@exploring-odoo&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQ0QM&quot; data-hveid=&quot;0&quot;&gt;Exploring Odoo (@exploring-odoo)&lt;/a&gt;&lt;/b&gt;: 재고 이동, BOM 설정 등 실제 업무 시나리오별 화면 조작법을 다뤄 실무 적용 시 참고하기 좋습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;23,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;23,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25&quot;&gt;5. GitHub 오픈소스 코드 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-83&quot; data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;26,0&quot;&gt;개발자에게는 실제 코드를 분석하는 것이 가장 빠른 학습 방법입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;26,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;26,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;27,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0,0&quot;&gt;&lt;a href=&quot;https://github.com/odoo/odoo&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQ1AM&quot; data-hveid=&quot;0&quot;&gt;공식 Odoo 저장소&lt;/a&gt;&lt;/b&gt;: 판매(sale), 재고(stock) 등 코어 모듈의 구조를 직접 확인할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;27,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;27,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0,0&quot;&gt;&lt;a href=&quot;https://github.com/oca&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQ1gM&quot; data-hveid=&quot;0&quot;&gt;OCA (Odoo Community Association)&lt;/a&gt;&lt;/b&gt;: 전 세계 파트너와 개발자가 협력하는 무료 확장 모듈 저장소입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;27,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,1,0,2&quot;&gt;. &lt;a href=&quot;https://www.google.com/search?q=https://runboat.odoo-community.org/builds&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQ1wM&quot; data-hveid=&quot;0&quot;&gt;Runboat&lt;/a&gt;을 통해 커밋 단위 테스트 인스턴스를 바로 실행해 볼 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;27,1,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,1,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;29&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29&quot;&gt;6. 해외 무료 온라인 강의 플랫폼&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;30,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0,0&quot;&gt;&lt;a href=&quot;https://www.classcentral.com/subject/odoo&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQ2QM&quot; data-hveid=&quot;0&quot;&gt;Class Central&lt;/a&gt;&lt;/b&gt;: Coursera, Udemy 등에 분산된 Odoo 강의 중 무료 강좌를 필터링하여 검색할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;30,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;30,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,1,0,0&quot;&gt;&lt;a href=&quot;https://www.udemy.com/topic/odoo/&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTrf2otLGWAxUAAAAAHQAAAAAQ2wM&quot; data-hveid=&quot;0&quot;&gt;Udemy Odoo 강의&lt;/a&gt;&lt;/b&gt;: 무료 기초 강좌가 일부 제공되며 할인 프로모션을 활용할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1,0,2&quot;&gt;. 수강 전 다루는 버전과 업데이트 일자를 확인하는 것이 중요합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1,0,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1,0,4&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;32&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32&quot;&gt;7. 추천 Odoo 학습 로드맵&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;33&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0,0,0&quot;&gt;체험 &amp;amp; 입문&lt;/b&gt;: 무료 체험판으로 프로세스 체험 &amp;rarr; eLearning의 &quot;Getting Started&quot; 수강&lt;/span&gt;&lt;span data-path-to-node=&quot;33,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,1,0,0&quot;&gt;실무 적용&lt;/b&gt;: 사내 버전에 맞는 사용자 문서 정독 &amp;rarr; 유튜브 업무 시나리오 영상 실습&lt;/span&gt;&lt;span data-path-to-node=&quot;33,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,2,0,0&quot;&gt;커스터마이징&lt;/b&gt;: 개발자 튜토리얼을 통한 커스텀 모듈 제작 실습&lt;/span&gt;&lt;span data-path-to-node=&quot;33,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,3,0,0&quot;&gt;심화 학습&lt;/b&gt;: GitHub의 공식 코어 및 OCA 모듈 코드로 실전 컨벤션 분석&lt;/span&gt;&lt;span data-path-to-node=&quot;33,3,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-path-to-node=&quot;35&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;35&quot;&gt;마치며&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_a9721921c79a15ce-92&quot; data-path-to-node=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;36,0&quot;&gt;현재 국내 한국어 자료는 해외에 비해 제한적인 편이므로, 공식 영문 문서와 실제 인스턴스 테스트를 병행하는 독학 방식이 가장 효율적입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;36,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;36,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>1. Odoo Insight (개요)/Odoo란? (도입 장점, 특징)</category>
      <category>ERP</category>
      <category>ERP도입</category>
      <category>Odoo</category>
      <category>odooerp</category>
      <category>오픈소스ERP</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/15</guid>
      <comments>https://wegosolution.tistory.com/15#entry15comment</comments>
      <pubDate>Fri, 21 Aug 2026 19:08:41 +0900</pubDate>
    </item>
    <item>
      <title>Odoo Community 무료 확장 모듈 추천 BEST 5 (OCA 모듈로 엔터프라이즈 기능 구현하기)</title>
      <link>https://wegosolution.tistory.com/14</link>
      <description>&lt;blockquote data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-54&quot; data-path-to-node=&quot;9,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;9,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;  핵심 요약&lt;/b&gt; &lt;br /&gt;Odoo 앱스토어의 고가 유료 모듈을 구매하지 않고도, 비영리 커뮤니티 &quot;OCA(Odoo Community Association)&quot;의 무료 오픈소스(LGPL/AGPL) 모듈을 활용하면 UI 개선, 엑셀 리포트 출력, 대용량 비동기 처리 등 엔터프라이즈급 기능을 구축할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;9,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,0,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-55&quot; data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;10,0&quot;&gt;Odoo를 도입한 기업들이 가장 많이 하는 질문 중 하나가 &quot;앱스토어에 유료 앱이 이렇게 많은데, 정말 추가 비용을 써야 하나요?&quot;입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-56&quot; data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;11,0&quot;&gt;결론부터 말씀드리면 꼭 그렇지는 않습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2&quot;&gt;. Odoo 앱스토어에는 OCA(Odoo Community Association)가 검증한 수천 개의 무료 오픈소스 모듈이 등록되어 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,4&quot;&gt;. 전 세계 파트너사와 개발진이 유지보수하며, 대부분 AGPL-3/LGPL-3 라이선스로 배포되어 상업적 무료 사용이 가능합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;11,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,6&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-57&quot; data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;12,0&quot;&gt;실제 구축 프로젝트에서 자주 검토하고 제조&amp;middot;유통 기업 실무에 즉시 적용 가능한 &lt;b data-index-in-node=&quot;44&quot; data-path-to-node=&quot;12,0&quot;&gt;무료 확장 모듈 BEST 5&lt;/b&gt;를 정리해 드립니다&lt;/span&gt;&lt;span data-path-to-node=&quot;12,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;12,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-path-to-node=&quot;12,2&quot;&gt;- Odoo 공식 앱스토어&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;1191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfXtYj/dJMcaaTUmXh/qT8N1nTKUhdWO4EbdQIHE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfXtYj/dJMcaaTUmXh/qT8N1nTKUhdWO4EbdQIHE1/img.png&quot; data-alt=&quot;https://apps.odoo.com/apps&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfXtYj/dJMcaaTUmXh/qT8N1nTKUhdWO4EbdQIHE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfXtYj%2FdJMcaaTUmXh%2FqT8N1nTKUhdWO4EbdQIHE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1654&quot; height=&quot;1191&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;1191&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://apps.odoo.com/apps&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14&quot;&gt;1. Web Responsive &amp;mdash; 커뮤니티 버전 UI/UX 및 모바일 화면 개선&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-58&quot; data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-59&quot; data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;16,0&quot;&gt;Odoo Community(무료) 버전에서도 Enterprise 버전 수준의 매끄러운 UX를 구현해 주는 필수 모듈입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;16,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;16,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;17,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0,0&quot;&gt;주요 기능:&lt;/b&gt; 전체화면 앱 메뉴 및 검색, 리스트 화면 헤더/푸터 고정, 폼 화면 상태바 고정&lt;/span&gt;&lt;span data-path-to-node=&quot;17,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;17,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0,0&quot;&gt;실무 효과:&lt;/b&gt; 모바일/태블릿 터치 UI가 최적화되어 생산 현장 및 물류 창고 담당자의 편의성이 대폭 향상됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;17,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;17,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0&quot;&gt;라이선스 및 링크:&lt;/b&gt; LGPL-3 (무료) / &lt;a href=&quot;https://apps.odoo-community.org/modules/web_responsive&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTyrHZxqaWAxUAAAAAHQAAAAAQ9AE&quot; data-hveid=&quot;0&quot;&gt;OCA Web Responsive 바로가기&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;p-rc_c2800ace85237d63-62&quot; data-path-to-node=&quot;17,2,1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18&quot;&gt;2. MIS Builder &amp;mdash; 노코드(No-Code) 커스텀 경영 리포트 &amp;amp; KPI 대시보드&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-63&quot; data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-64&quot; data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;20,0&quot;&gt;재고 회전율, 부서별 매출총이익, 월별 원가율 등 표준 회계 리포트 외에 기업 맞춤형 지표를 코딩 없이 직접 설계할 수 있습니다&lt;/span&gt;&lt;span data-path-to-node=&quot;20,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;20,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;21,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0,0&quot;&gt;주요 기능:&lt;/b&gt; 행(KPI)과 열(기간/전년 대비)을 매핑하는 노코드 리포트 설계, PDF 및 엑셀 출력 지원&lt;/span&gt;&lt;span data-path-to-node=&quot;21,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;21,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;실무 효과:&lt;/b&gt; 별도 BI 툴 도입 없이 경영진 보고용 대시보드를 Odoo 내부에서 구축합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;라이선스 및 링크:&lt;/b&gt; AGPL-3 (무료) / &lt;a href=&quot;https://apps.odoo-community.org/shop/mis-builder-1636&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTyrHZxqaWAxUAAAAAHQAAAAAQ-gE&quot; data-hveid=&quot;0&quot;&gt;OCA MIS Builder 바로가기&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;p-rc_c2800ace85237d63-67&quot; data-path-to-node=&quot;21,2,1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22&quot;&gt;3. Stock Batch Picking &amp;mdash; 창고 출고/피킹 작업 일괄 처리&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-68&quot; data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-69&quot; data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;24,0&quot;&gt;여러 건의 출고 건을 하나씩 열람하지 않고, 하나의 배치(Batch)로 묶어 동선 낭비와 출하 실수를 줄여줍니다&lt;/span&gt;&lt;span data-path-to-node=&quot;24,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;24,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;25,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0,0&quot;&gt;주요 기능:&lt;/b&gt; 복수 피킹 일괄 처리, 수량 예약 및 부분 출고, 배치 단위 피킹 리스트 출력&lt;/span&gt;&lt;span data-path-to-node=&quot;25,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;25,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0,0&quot;&gt;실무 효과:&lt;/b&gt; 소품종 대량 출고가 많은 유통&amp;middot;이커머스 및 다수 작업지시(WO) 자재 일괄 불출 제조 현장에 적합합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;25,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;25,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,2,0&quot;&gt;라이선스 및 링크:&lt;/b&gt; AGPL-3 (무료) / &lt;a href=&quot;https://www.google.com/search?q=https://apps.odoo-community.org/shop/stock-batch-picking-4234&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTyrHZxqaWAxUAAAAAHQAAAAAQgAI&quot; data-hveid=&quot;0&quot;&gt;OCA Stock Batch Picking 바로가기&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;p-rc_c2800ace85237d63-72&quot; data-path-to-node=&quot;25,2,1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;26&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26&quot;&gt;4. Base Report XLSX &amp;mdash; 사내 엑셀 양식 그대로 리포트 출력&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-73&quot; data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-74&quot; data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;28,0&quot;&gt;Odoo 데이터를 기업 고유의 엑셀 레이아웃 양식에 맞춰 직접 출력할 수 있도록 지원하는 핵심 기반 엔진입니다&lt;/span&gt;&lt;span data-path-to-node=&quot;28,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;28,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,0,0,0&quot;&gt;주요 기능:&lt;/b&gt; 복합 엑셀 리포트 서식 생성 기반 엔진 제공&lt;/span&gt;&lt;span data-path-to-node=&quot;29,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;29,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,0,0&quot;&gt;실무 효과:&lt;/b&gt; 기존 엑셀 수기 관리 양식을 Odoo 시스템으로 이관할 때 표준적으로 활용됩니다&lt;/span&gt;&lt;span data-path-to-node=&quot;29,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;29,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,2,0&quot;&gt;라이선스 및 링크:&lt;/b&gt; AGPL-3 (무료) / &lt;a href=&quot;https://apps.odoo-community.org/shop/base-report-xlsx-2202&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTyrHZxqaWAxUAAAAAHQAAAAAQhgI&quot; data-hveid=&quot;0&quot;&gt;OCA Base Report XLSX 바로가기&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;p-rc_c2800ace85237d63-77&quot; data-path-to-node=&quot;29,2,1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;30&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30&quot;&gt;5. Job Queue &amp;mdash; 대량 데이터 처리 시 멈춤 현상(타임아웃) 방지&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-78&quot; data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-79&quot; data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;32,0&quot;&gt;대용량 데이터 임포트, 다수 거래처 메일 일괄 발송, 외부 시스템(MES/WMS) 연동 시 발생하는 화면 멈춤을 방지합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;32,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;32,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;33&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0,0,0&quot;&gt;주요 기능:&lt;/b&gt; 무거운 트랜잭션을 백그라운드로 넘겨 비동기 처리, 실패 시 자동 재시도 및 채널별 로드 밸런싱&lt;/span&gt;&lt;span data-path-to-node=&quot;33,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;33,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,1,0,0&quot;&gt;실무 효과:&lt;/b&gt; 연동 데이터양이 많은 환경에서 시스템 멈춤 없이 안정적인 워크플로우를 보장합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;33,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,2,0&quot;&gt;라이선스 및 링크:&lt;/b&gt; LGPL-3 (무료) / &lt;a href=&quot;https://apps.odoo-community.org/shop/job-queue-2176&quot; data-ved=&quot;0CAAQ_4QMahgKEwjTyrHZxqaWAxUAAAAAHQAAAAAQjAI&quot; data-hveid=&quot;0&quot;&gt;OCA Job Queue 바로가기&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;p-rc_c2800ace85237d63-82&quot; data-path-to-node=&quot;33,2,1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;35&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;35&quot;&gt;무료 모듈 설치 전 필수 체크리스트 3가지&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;p-rc_c2800ace85237d63-83&quot; data-path-to-node=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;37&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;37,0,0,0&quot;&gt;버전 호환성 확인:&lt;/b&gt; 사용하는 Odoo 버전(v16, v17, v18, v19 등)에 일치하는 OCA 브랜치인지 확인해야 합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;37,0,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,0,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;37,1,0,0&quot;&gt;Enterprise 충돌 점검:&lt;/b&gt; 일부 UI 및 프로세스 확장 모듈은 Enterprise 전용 기능과 겹칠 수 있어 사전 테스트가 필요합니다&lt;/span&gt;&lt;span data-path-to-node=&quot;37,1,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,1,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;37,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;37,2,0,0&quot;&gt;커스터마이징 범위:&lt;/b&gt; MIS Builder, Job Queue 같은 프레임워크형 모듈은 기업 업무 흐름에 맞는 로직 설계가 동반되어야 최적의 성능을 냅니다&lt;/span&gt;&lt;span data-path-to-node=&quot;37,2,0,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;37,2,0,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;39&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;39&quot;&gt;함께 읽으면 좋은 Odoo 실무 가이드&lt;/b&gt; &lt;i data-index-in-node=&quot;22&quot; data-path-to-node=&quot;39&quot;&gt;(내부 링크용)&lt;/i&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;40&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;  [Odoo v19 한글화 및 국내 현지화 가이드]&lt;/li&gt;
&lt;li&gt;  [입고된 자재가 제자리를 찾아가는 Odoo 보관 규칙(Putaway Rules) 설정법]&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;Odoo 도입 관련해서 궁금한 점이 있으시거나 자사 맞춤 견적 상담이 필요하시다면 언제든지 위고솔루션으로 문의해 주세요!&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;margin: 32px 0; font-family: 'Malgun Gothic','Apple SD Gothic Neo',sans-serif;&quot;&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; margin-bottom: 14px; background: linear-gradient(135deg,#fbdada 0%,#fdf3f1 55%,#ffffff 100%);&quot; href=&quot;https://www.wegosolution.co.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 28px; margin-right: 16px; flex-shrink: 0; line-height: 1;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;&lt;b&gt;공식 홈페이지&lt;/b&gt;에서&lt;br /&gt;&lt;b&gt;더 많은 정보&lt;/b&gt;를 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #c9a9a4; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;display: flex; align-items: center; justify-content: space-between; text-decoration: none; border-radius: 16px; padding: 20px 24px; background: linear-gradient(135deg,#d9f2e2 0%,#f0faf3 55%,#ffffff 100%);&quot; href=&quot;https://blog.naver.com/can7777585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center;&quot;&gt;&lt;span style=&quot;display: inline-flex; align-items: center; justify-content: center; min-width: 64px; margin-right: 16px; flex-shrink: 0; font-size: 17px; font-weight: 900; letter-spacing: -0.5px; color: #03c75a;&quot;&gt;NAVER&lt;/span&gt;&lt;span style=&quot;font-size: 16px; line-height: 1.5; color: #222;&quot;&gt;더 자세한 내용은&lt;br /&gt;&lt;b&gt;네이버 블로그&lt;/b&gt;를 통해 확인하세요!&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 22px; color: #a3c9ae; flex-shrink: 0; line-height: 1;&quot;&gt;&amp;rsaquo;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</description>
      <category>1. Odoo Insight (개요)/Odoo란? (도입 장점, 특징)</category>
      <category>ERP</category>
      <category>ERP도입</category>
      <category>OCA모듈</category>
      <category>Odoo</category>
      <category>OdooCommunity</category>
      <category>odooerp</category>
      <category>위고솔루션</category>
      <author>wegosolution</author>
      <guid isPermaLink="true">https://wegosolution.tistory.com/14</guid>
      <comments>https://wegosolution.tistory.com/14#entry14comment</comments>
      <pubDate>Mon, 17 Aug 2026 11:05:39 +0900</pubDate>
    </item>
  </channel>
</rss>