콘텐츠로 건너뛰기

Odoo account.move.line 모델 이해하기: 저널 항목(Journal Entry) 분석

개발자와 기능 컨설턴트를 위한 Odoo 분개선(저널 엔트리 라인) 모델 완벽 안내서
2026년 3월 10일 작성자
Odoo account.move.line 모델 이해하기: 저널 항목(Journal Entry) 분석
Dasolo
| 아직 댓글이 없습니다

소개


Odoo에서 ‘모델’은 데이터 구조와 저장 방식을 규정하는 설계도입니다. 판매 주문, 송장, 분개 같은 모든 핵심 비즈니스 항목은 각기 모델에 보관되며, 이 모델들이 관계를 맺어 애플리케이션의 데이터 계층을 이룹니다.


모델을 이해하는 일은 개발자와 업무 담당자 모두에게 필수입니다. 모델은 필드 정의, 레코드 간 관계, 그리고 핵심 비즈니스 규칙을 담는 뼈대이자 Odoo 데이터 아키텍처의 기반입니다.

이 글은 Odoo 회계 모듈에서 가장 중심이 되는 모델 중 하나인 account.move.line에 초점을 맞춥니다. 맞춤형 리포트 작성, 외부 시스템 연동, 또는 화해(reconciliation) 흐름 설정 등 회계 데이터를 다루는 대부분 작업이 이 모델을 통해 이루어집니다.

account.move.line 모델이란 무엇인가


account.move.line은 Odoo에서 개별 분개(line) 항목을 나타냅니다. 각 레코드는 저쪽(차변) 또는 저쪽(대변) 중 하나의 금액을 표현하며, 하나의 분개(move)에 속한 모든 라인은 합계가 일치해야 합니다 — 즉 총 차변이 총 대변과 같아야 합니다.


이 모델은 회계(Accounting) 모듈에서 사용됩니다. 상위 객체인 account.move가 송장, 청구서, 은행 명세서 등 분개 자체를 대표하고, 각 move는 하나 이상의 move.line을 자식으로 가집니다.


account 모듈에서 기본 정의를 제공하고, 다른 모듈들이 Odoo의 모델 상속을 통해 기능을 덧붙입니다. 판매 모듈은 송장 라인 관련 정보를, 구매 모듈은 청구 라인 정보를 추가하고, 분석 회계는 분석 분배 값을 확장하는 식으로 핵심 구조를 중복 없이 확장합니다.

모델의 핵심 필드들


아래는 account.move.line에서 반드시 숙지해야 할 주요 필드들입니다. 이들을 알면 분개와 회계 데이터 작업이 훨씬 수월해집니다.


1. name

유형: Char. 라인 표기나 설명을 저장합니다. 필수 필드로 분개 화면과 리포트에 표시됩니다. 송장 라인은 보통 상품명이나 사용자 정의 설명에서 가져옵니다.


2. move_id

유형: Many2one (account.move). 라인을 상위 분개에 연결하는 필드입니다. 각 라인은 정확히 하나의 move에 속하며, 이 관계가 모델의 핵심 연결 고리입니다.


3. account_id

유형: Many2one (account.account). 이 라인이 게시되는 계정입니다. 필수이며 뷰 계정이나 닫힌 계정은 사용할 수 없습니다. 계정과목별 보고와 그룹화에 사용됩니다.


4. debit

유형: Float. 차변 금액입니다. 기본값은 0.0. 한 라인에선 차변 또는 대변 중 하나만 설정됩니다. 차변은 자산과 비용 계정을 증가시킵니다.


5. credit

유형: Float. 대변 금액입니다. 기본값은 0.0. 대변은 부채, 자본, 수익 계정을 증가시킵니다. 하나의 분개에서 모든 차변 합계는 모든 대변 합계와 일치해야 합니다.


6. balance

유형: Float. 계산 필드로 debit에서 credit을 뺀 값입니다. 라인의 순효과를 나타내며, 차변이면 양수, 대변이면 음수로 표시됩니다. 리포트와 화해 기능에 자주 사용됩니다.


7. partner_id

유형: Many2one (res.partner). 해당 라인과 연계된 고객·공급업체 등 거래처입니다. 매출채권/매입채무 추적, 나이브 리포트(aging), 화해 매칭에 중요합니다.


8. date

유형: Date. 라인의 적용 일자입니다. 보통 상위 분개의 날짜를 물려받습니다. 기간 마감, 보고, 채권·채무 연령 산출에 사용됩니다.


9. date_maturity

유형: Date. 결제 만기일입니다. 매출채권·매입채무 관련 보고와 결제 스케줄링에 필요합니다.


10. currency_id

유형: Many2one (res.currency). 라인 금액의 통화입니다. 회사 통화와 다른 통화를 사용할 수 있어 다국적 회계 처리를 지원합니다.


11. amount_currency

유형: Float. 라인 통화로 표시된 금액입니다. currency_id와 함께 다중 통화 분개를 처리하는 핵심 필드입니다.


12. quantity

유형: Float. 선택적 수량입니다. 주로 상품 기반의 송장이나 청구서 라인에서 사용되며, 단위당 가격 계산과 수량별 보고에 유용합니다.


13. product_id

유형: Many2one (product.product). 라인과 연결된 상품입니다. 판매 주문, 구매 주문 또는 송장 라인에서 채워집니다.


14. product_uom_id

유형: Many2one (uom.uom). 수량의 단위(예: 개, kg 등)입니다. 상품 연동 시 적절한 단위 표시와 환산에 필요합니다.


15. price_unit

유형: Float. 단가입니다. 수량과 함께 송장·청구서 라인의 금액을 계산합니다.


16. tax_ids

유형: Many2many (account.tax). 이 라인에 적용된 세금 목록입니다. 세금 적용 시 Odoo는 별도의 세금 라인을 생성하며, 부가가치세 등 세금 계산에 사용됩니다.


17. tax_line_id

유형: Many2one (account.tax). 세금 라인의 경우 어떤 세금이 해당 라인을 생성했는지 참조합니다. 일반 라인과 세금 라인을 구분하기 위해 쓰입니다.


18. analytic_account_id

유형: Many2one (account.analytic.account). 비용·수익을 분석할 분석 계정입니다. 분석 회계 기능을 활성화한 경우 보고서에서 프로젝트·부서별 집계를 위해 사용됩니다.


19. analytic_distribution

유형: Json 또는 Text. 여러 분석 계정에 대한 분배 정보를 저장합니다. 최신 Odoo 버전에서는 분석 계획을 사용할 때 analytic_account_id를 대체하는 방식으로 쓰입니다.


20. ref

유형: Char. 보통 상위 분개에서 연결되는 외부 참조나 메모입니다. 리포트에 표시되며 화해 시 매칭 키로 활용됩니다.


21. narration

유형: Text. 상위 분개에서 이어지는 내부 메모입니다. 기본적으로 고객에게 출력되는 문서에는 포함되지 않습니다.


22. journal_id

유형: Many2one (account.journal). 상위 분개의 저널(전표장)입니다. 저널별 필터링과 보고에 사용됩니다.


23. company_id

유형: Many2one (res.company). 소속 회사입니다. 다중 회사 환경에서 가시성, 결산, 연결 재무제표에 영향을 미칩니다.


24. reconciled

유형: Boolean. 해당 라인이 완전히 화해(결제 매칭)되었는지를 나타냅니다. 화해 화면에서 미결 항목을 필터링할 때 사용됩니다.


25. full_reconcile_id

유형: Many2one (account.full.reconcile). 함께 화해된 여러 라인을 연결하는 그룹 식별자입니다. 화해 그룹을 추적하는 데 중요합니다.


26. payment_id

유형: Many2one (account.payment). 결제 관련 라인의 경우 연결된 결제 레코드입니다. 송장과 결제를 매칭할 때 사용됩니다.


27. statement_id

유형: Many2one (account.bank.statement). 은행 명세서 라인과 연결될 때 참조되는 필드입니다. 은행 화해 작업에 사용됩니다.


28. statement_line_id

유형: Many2one (account.bank.statement.line). 특정 은행 명세서 라인과 직접 연결하는 필드로, 분개와 은행 거래 매칭에 사용됩니다.


29. display_type

유형: Selection. 'line_section' 또는 'line_note' 값을 갖습니다. 섹션 헤더나 노트용 라인으로 차변/대변 금액이 없고 화면 표시 목적만 가진 항목입니다.


30. create_date

유형: Datetime. 레코드가 생성된 시각을 자동으로 저장합니다. 감사 추적에 유용합니다.


31. write_date

유형: Datetime. 레코드가 마지막으로 수정된 시각을 자동으로 저장합니다. 변경 이력 추적에 도움됩니다.

비즈니스 흐름에서의 활용 방식


1. 고객 송장 처리

송장을 확정하면 Odoo는 여러 account.move.line 레코드를 만듭니다. 수익 관련 라인은 수익 계정으로, 매출채권 라인은 고객 계정으로 들어가고, 세금은 별도의 세금 라인을 생성합니다. 이때 partner_id가 고객과 연결되어 연령분석이나 화해에 사용됩니다.


2. 매입 청구서

매입 청구서는 비용, 매입세액, 매입채무 등 라인을 생성합니다. 각 라인에는 계정(account_id), 차변/대변, partner_id가 포함되며, 고객 송장 처리와 유사한 구조지만 계정 유형이 반대입니다.


3. 은행 화해 과정

은행 명세서 라인은 statement_line_id로 분개 라인과 매칭됩니다. 화해 시 Odoo는 관련 라인들을 full_reconcile_id로 연결하고, reconciled 플래그를 True로 설정합니다.


4. 수동 분개 입력

사용자가 여러 라인을 가진 수동 분개를 생성할 수 있습니다. 각 라인에는 계정과 차변/대변, 필요시 거래처가 포함되며, Odoo는 게시(post) 전 차변과 대변의 합이 같아야 한다는 규칙을 강제합니다.



5. 분석 회계 및 비용 보고

분석 회계를 활성화하면 라인에 analytic_account_id 또는 analytic_distribution이 붙습니다. 보고서는 분석 계정별로 그룹화되어 프로젝트·부서·활동별 비용 및 수익을 보여줍니다.

개발자가 이 모델을 확장하는 방법


개발자는 여러 패턴을 사용해 account.move.line을 확장합니다. 모델 상속이 가장 일반적인 수단입니다.


모델 상속

_inherit = 'account.move.line'을 선언해 모델을 확장합니다. 새로운 필드를 추가하거나 메서드를 오버라이드하고 제약조건을 넣을 수 있습니다. 별도 모듈에 변경을 보관하면 Odoo 업그레이드 시 관리가 용이합니다.


필드 추가

상속한 모델에 원하는 필드를 정의하세요. Char, Many2one, Boolean, Integer, Text, Selection 등 적절한 타입을 선택하고 다중 회사 환경을 고려해 company-dependent 설정을 검토하세요. 계산 필드의 depends 관계를 신중히 설계해야 합니다.


파이썬 확장

레코드 생성(create), 수정(write), 삭제(unlink) 메서드를 재정의해 추가 로직을 넣을 수 있습니다. 이때 반드시 super()를 호출해 기본 동작을 유지하고, 차변=대변 규칙을 깨지 않도록 주의하세요. Odoo API 메서드는 외부 연동에서도 사용됩니다.


Odoo Studio

Odoo Studio를 이용하면 코드 없이 account.move.line에 필드를 추가할 수 있어 간단한 커스터마이징은 빠르게 처리할 수 있습니다. 다만 복잡한 비즈니스 로직이나 화해 규칙은 별도 모듈로 구현하는 것이 더 유지보수에 유리합니다.

권장 실무 지침


  • 항상 분개(move)를 통해 라인을 생성·수정하세요. move의 API(예: line_ids)를 통해 작업하면 Odoo가 무결성 검사를 실행하고 관련 후처리를 처리합니다.
  • 보고서를 만들 때는 move_id.state = 'posted'로 필터링해 임시(draft)나 취소된 항목을 제외하세요.
  • 적절한 account_id(예: receivable, payable 등)를 사용해야 연령표와 화해 동작이 올바르게 동작합니다.
  • API로 통합할 때는 먼저 move를 생성한 뒤 라인을 추가하세요. 게시 전에 차변과 대변 합이 일치하는지 확인해야 합니다.
  • 커스텀 필드는 향후 충돌을 방지하기 위해 x_ 접두사나 모듈 고유 접두사를 사용하세요.

자주 하는 실수들


  • 같은 라인에 debit과 credit을 동시에 설정하는 행위. 각 라인은 차변이나 대변 중 하나만 가져야 합니다.
  • 균형이 맞지 않는 분개 생성. 분개의 차변 합과 대변 합은 일치해야 하며, Odoo는 게시 시 이를 검증합니다.
  • 게시된 라인을 적절한 정정 절차 없이 직접 수정하는 것. 기표된 전표는 반대 전표나 조정 전표로 처리해야 합니다.
  • 매출채권·매입채무 라인에 partner_id를 누락하는 실수. 그러면 연령분석과 화해 기능이 손상됩니다.
  • core 메서드를 오버라이드하면서 super()를 호출하지 않는 것. 이로 인해 화해나 잠금(locking) 등 다른 모듈 기능이 깨질 수 있습니다.

결론


account.move.line 모델은 Odoo 회계의 중심입니다. 모든 분개, 송장, 청구서의 차변·대변 항목이 이 모델에 저장됩니다. 필드와 확장 방식을 잘 이해하면 Odoo 설정, 커스터마이징, 통합이 훨씬 효율적입니다.

업무 프로세스를 설계하는 컨설턴트든 맞춤 리포트와 연동을 만드는 개발자든, account.move.line에 대한 탄탄한 이해는 시간과 오류를 줄여줍니다.

Odoo 도입 지원이 필요하신가요?


Dasolo는 기업의 Odoo 도입, 맞춤 개발, 최적화를 지원합니다. 특히 API 연동과 Odoo 데이터 모델 설계에서 풍부한 경험을 보유하고 있으며 account.move.line 같은 핵심 모델에 대한 실무 노하우를 제공합니다.


Odoo 도입, 맞춤 모듈 개발, 통합 작업에 도움이 필요하시면 연락 주세요. 데모 예약 프로젝트 상담을 위해 일정을 잡아보세요.

Odoo account.move.line 모델 이해하기: 저널 항목(Journal Entry) 분석
Dasolo 2026년 3월 10일
이 게시물 공유하기
로그인 의견을 남기기