본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
LS Taiwan
검색
검색
보이기
계정 만들기
로그인
개인 도구
계정 만들기
로그인
로그아웃한 편집자를 위한 문서
더 알아보기
기여
토론
Dolibarr 모듈 개발
편집하기
문서
토론
한국어
읽기
편집
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
편집
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
보이기
사이드바로 이동
숨기기
172.27.0.1
(
토론
)
님의 2025년 4월 8일 (화) 08:07 판
(
→
DoiiStore 외부 모듈 활성화 조건
)
(
차이
)
← 이전 판
|
최신판
(
차이
) |
다음 판 →
(
차이
)
경고: 이 문서의 오래된 판을 편집하고 있습니다.
이것을 게시하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
=모듈 개발= ==모듈 개발 단계== 필수 * 모듈 설명자 생성 (사전준비) 모듈 빌더(Module Builder)라는 표준 모듈을 활성화하여, 모듈 설명자를 생성한다. ('''버그 이미지''' 클릭) 모듈 설명자 생성은 돌리바르 모듈 개발의 첫 번째 필수 단계로서, 개발하는 모듈의 기본적인 정보를 시스템에 제공하여 모듈이 정상적으로 작동하고 관리될 수 있도록 하는 중요한 과정입니다. 모듈 빌더를 사용하거나 수동으로 파일을 생성 및 수정하여 모듈 설명자를 만들 수 있으며, 생성 후에는 반드시 테스트를 거쳐 시스템에 제대로 인식되는지 확인해야 한ㄷ. :* 수동 모듈 설명자 생성 1. 모듈 디렉토리 생성 외부 모듈: htdocs/custom/ 코어 모듈: /htdocs/ 아래에 모듈 이름 디렉토리 생성하고 /core/modules 디렉토리고 구성 (즉, '''직접''' core 디렉토리 '''만들지 않음!''') 예) 를 들어, 'mymodule'이라는 모듈을 개발한다면 /htdocs/custom/mymodule/core/modules 또는 /htdocs/mymodule/core/modules와 같은 경로가 된다. 2. 템플릿 파일 복사 htdocs/modulebuilder/template 디렉토리에서 modMyModule.class.php 파일을 생성한 모듈의 /core/modules 디렉토리로 복사 3. 파일 이름 변경 복사한 modMyModule.class.php 파일의 이름을 개발하려는 모듈의 목적에 맞게 변경합니다. 이때 파일 이름은 반드시 mod로 시작하고 .class.php로 끝 나야 한다. 예) 예를 들어, 모듈 이름이 'NewName'이라면 파일 이름은 modNewName.class.php가 되어야 합니다 4.파일 내용 수정: 복사 및 이름 변경한 PHP 파일의 내용을 다음과 같이 수정합니다: ◦ 클래스 이름 변경: 파일 내용에 있는 모든 "modMyModule"을 모듈의 목적에 맞는 이름 (예: "modNewName")으로 변경합니다. 이 값 역시 항상 mod로 시작하고 영문자로만 구성되어야 합니다. ◦ 모듈 ID 설정: $this->numero = 100000; 라인에서 100000을 개발하는 모듈의 고유한 ID로 변경합니다. 다른 모듈과의 충돌을 피하기 위해 이미 예약된 ID 목록 페이지를 참고해야 합니다. ◦ 생성자 변수 수정: 생성자 (constructor)에 정의된 다른 변수들의 의미를 코드 내 주석을 참고하여 필요에 따라 수정합니다 모듈 설명자 테스트: 모듈 설명자 파일을 생성하고 수정한 후에는 돌리바르에서 해당 모듈이 인식되는지 테스트해야 합니다. # 돌리바르에 접속하여 설정(Setup) -> 모듈(Module) 페이지로 이동합니다. # 모듈 설명에 version 속성을 올바르게 설정했다면, 새로운 모듈이 목록에 나타나고 활성화/비활성화 옵션을 확인할 수 있습니다. # version 속성을 "develop" 또는 "experimental"로 설정한 경우, 모듈을 보기 위해서는 먼저 설정(Setup) -> 기타(Others) 페이지로 이동하여 MAIN_FEATURES_LEVEL을 1 (실험적 모듈) 또는 2 (개발 모듈)로 설정해야 합니 * 모듈 파일 경로 구조 정확한 파일 경로 구조는 돌리바르가 모듈의 다양한 구성 요소 (클래스, SQL 스크립트, 템플릿, 설정 페이지 등)를 올바르게 찾고 실행할 수 있도록 기반이 된다. 배포를 위한 ZIP파일 구조를 만들 때도, 현재 파일 구조를 사용하여 만든다. 파일 구조 • mymodule/build/: 컴파일 또는 패키지 빌드 관련 파일을 포함할 수 있습니다. • mymodule/core/modules/: 모듈 설명자 파일인 modMyModule.class.php를 포함해야 합니다. • mymodule/core/triggers: 모듈에서 제공하는 트리거 파일을 포함합니다. • mymodule/admin/: 모듈 설정 페이지 관련 파일을 포함합니다. • mymodule/class/: 모듈에서 제공하는 PHP 클래스 파일을 포함합니다. • mymodule/css/: 모듈의 CSS 파일을 포함합니다. • mymodule/js/: 새로운 기능을 위한 Javascript 파일을 포함합니다. • mymodule/docs/: 문서 및 라이선스 파일을 포함합니다. • mymodule/img/: 이미지 파일을 포함합니다. • mymodule/langs/xx_XX/: 특정 언어 (xx_XX)에 대한 언어 파일을 포함하며, 최소한 en_US를 포함하는 것이 좋습니다. • mymodule/lib/: 모듈에서 사용되는 라이브러리를 포함합니다. • mymodule/scripts/: 명령줄 도구나 스크립트를 포함하며, #!/usr/bin/env php로 시작해야 합니다. • mymodule/sql/: 새로운 테이블이나 인덱스를 추가하기 위한 SQL 파일을 포함합니다. • mymodule/theme/mytheme/: 모듈 자체의 테마/스킨을 제공하는 경우 관련 파일을 포함합니다. 이해 하기 위한 예) 모듈 설명자 파일이 위치하는 mymodule/core/modules/ 디렉토리에 존재함 데이터베이스 테이블을 추가하는 모듈이라면 SQL 파일은 반드시 mymodule/sql/ 디렉토리 PHP 관련 클래스는 mymodule/class/ 디렉토리 설정 페이지는 mymodule/admin/, 언어 파일은 mymodule/langs/xx_XX/에 위치함 * 자체 번호 매기기 규칙 추가 선택 사항 * SQL 테이블 및 PHP DAO 클래스 생성 SQL 테이블 및 PHP DAO 클래스 생성, 모듈의 데이터 모델을 정의하고, 데이터베이스와의 상호작용을 추상화하여 효율적이고 체계적인 데이터 관리한다. '''SQL 테이블 및 PHP DAO 클래스 생성 단계는 일반적으로 모듈 설명자를 생성하고 기본적인 파일 구조를 설정한 이후'''에 진행한다. 모듈이 관리할 데이터 구조가 결정되면, 데이터베이스 테이블로 정의하고 해당 데이터에 접근하고 조직하기 위한 PHP 클래스를 만든다. :* SQL 테이블 생성: • 모듈에서 자체 데이터를 관리해야 하는 경우, 데이터를 저장하기 위한 SQL 테이블을 정의해야 합니다. • 테이블 생성 및 데이터 로딩 스크립트는 모듈 디렉토리의 sql 하위 디렉토리 (mymodule/sql/)에 저장됩니다. ModuleBuilder를 사용하는 경우, 새로운 객체를 생성할 때 이 디렉토리와 SQL 파일이 자동으로 생성될 수 있습니다. • 모듈 설명자 파일의 init 함수 내에서 $this->_load_tables('/mymodule/sql/'); 라인이 주석 처리되어 있지 않은지 확인해야 합니다. 이 라인은 모듈이 활성화될 때 SQL 테이블을 로드하는 역할을 합니다. • 테이블 생성 명령은 테이블당 하나의 .sql 파일 (llx_mytable.sql) 원칙에 따라 작성하며, 필요한 경우 인덱스 관련 파일 (llx_mytable.key.sql)을 추가할 수 있습니다. 기존 테이블 구조는 install/mysql/tables 디렉토리에서 참고할 수 있습니다. • SQL 필드의 권장 유형 및 이름 규칙은 Language_and_development_rules#Table_and_fields_structures 페이지를 참조해야 합니다. • 초기 데이터를 추가/수정/삭제하기 위한 SQL 명령은 mymodule/sql/ 디렉토리 내의 data.sql 파일에 작성해야 합니다. • 문자열에는 큰따옴표가 아닌 작은따옴표를 사용해야 합니다 ('chaine' vs "chaine"). 이는 PostgreSQL과의 호환성을 위한 규칙입니다. • SQL 파일은 MySQL 데이터베이스에서 작동해야 하며, 다른 데이터베이스의 파일은 유지 관리되지 않지만 해당 데이터베이스 드라이버에 의해 즉석에서 읽고 변환됩니다. :*SQL 파일 테스트: • SQL 파일이 준비되면, 돌리바르 모듈 설정 페이지에서 해당 모듈을 비활성화한 후 데이터베이스에서 해당 테이블을 삭제 (존재하는 경우)하고 다시 활성화하여 테이블이 올바르게 생성되는지 테스트할 수 있습니다. • 테이블이 생성되지 않으면 스크립트를 직접 실행하거나 돌리바르 로그를 확인하여 오류를 찾아야 합니다. :*PHP DAO 클래스 생성: • DAO (Data Access Object) PHP 파일은 ModuleBuilder를 사용하여 객체를 생성한 후 자동으로 생성됩니다. • 수동으로 생성할 수도 있지만, ModuleBuilder 사용이 권장됩니다. 예제 파일은 htdocs/modulebuilder/templates/class/myobject.class.php에서 찾을 수 있습니다. • DAO 클래스에는 테이블 행의 삽입(Create), 조회(Read), 업데이트(Update), 삭제(Delete)를 수행하는 CRUD 메소드가 이미 포함되어 있습니다. • 생성된 DAO 클래스 파일을 편집하여 올바른 모듈 이름과 테이블 이름을 사용하도록 수정하고, 모듈의 class 하위 디렉토리에 저장해야 합니다. **다른 모듈 개발과 연관성 • PHP 화면 생성 및 수정: 생성된 SQL 테이블의 데이터를 보여주거나 편집하기 위한 새로운 PHP 화면을 만들거나 기존 화면에 필드를 추가할 수 있습니다. 이때 DAO 클래스의 메소드를 사용하여 데이터베이스에 접근하게 됩니다. • 탭 관리: 새로운 데이터 관련 정보를 기존 돌리바르 객체 (예: 송장, 제품) 화면에 새로운 탭으로 추가할 수 있습니다. 이 탭의 내용은 DAO 클래스를 통해 데이터베이스에서 가져올 수 있습니다. • 설정 페이지 추가: 모듈의 데이터 관련 설정을 사용자가 정의할 수 있는 설정 페이지를 만들 수 있습니다. • 메뉴 항목 정의: 새로운 데이터 관리 기능을 접근할 수 있는 메뉴 항목을 추가할 수 있습니다. • 권한 정의: 데이터 접근 및 조작에 대한 권한을 정의하여 보안을 강화할 수 있습니다. • 내보내기 정의: 모듈에서 관리하는 데이터를 내보낼 수 있는 기능을 추가할 수 있습니다. * 탭 관리 * PHP 화면 생성 또는 수정 * 자체 설명 페이지 추가 * 메뉴 항목 정의 * 자체 권한 추가 * 자체 박스 정의 * 자체 내보내기 정의 * CSS 스타일 정의 * Javascript 함수 추가 * 이벤트에 코드 실행 * hook 위치에 코드 삽입 * 문서 템플릿 추가 * 스킨 추가 ==모듈 생성도구== 모듈 생성 도구 (Module Builder) 는 돌리바 ERP CRM 모듈 개발 과정을 용이하게 함 모듈 생성 도구의 역할 및 중요성: • 주요 페이지 생성 간소화: 모듈 개발자는 모듈 생성 도구를 활용하여 '''모듈의 기본적인 페이지 구조'''를 더 쉽게 만들 수 있습니다. 이는 개발 시간을 단축하고 초기 개발 단계를 빠르게 진행할 수 있도록 돕습니다. • '''모듈 설명자 생성''' 지원: 과거에는 모듈 설명자 파일을 수동으로 생성하고 편집해야 했지만, 모듈 생성 도구가 도입되면서 이 과정을 자동화하거나 사용자 친화적인 인터페이스를 통해 관리할 수 있게 되었습니다. 모듈 설명자는 돌리바 시스템이 '''새로운 모듈을 인식하고 작동하는 데 필수적인 파일'''이므로, 이 도구의 존재는 모듈 개발의 첫 번째 중요한 단계를 더 쉽게 만듭니다. • SQL 구조 및 DAO 클래스 자동 생성: 모듈에서 자체 데이터를 관리해야 하는 경우, 모듈 생성 도구를 사용하면 '''데이터베이스 테이블을 정의하는 SQL 파일과 해당 테이블에 접근하고 조작하는 PHP DAO 클래스를 자동으로 생성'''할 수 있습니다. 특히 DAO 클래스 생성은 CRUD (Create, Read, Update, Delete) 메소드를 포함하는 복잡한 작업일 수 있지만, 모듈 생성 도구를 통해 몇 번의 클릭만으로 자동화할 수 있어 개발 편의성을 크게 향상시킵니다. • 기본 화면 템플릿 제공: 새로운 PHP 화면을 개발해야 할 때, 모듈 생성 도구는 기본적인 '''뼈대 코드 (skeleton templates)를 제공하여 개발자가 이를 기반으로 실제 화면 로직을 구현하는 데 집중'''할 수 있도록 돕습니다. 예시 템플릿 파일 (modulebuilder/myobject_page.php)을 활용하여 초기 화면 개발의 부담을 줄일 수 있습니다. • 개발 편의성 및 효율성 증대: 전반적으로 모듈 생성 도구는 반복적이고 기술적인 작업을 자동화하거나 간소화하여 '''개발자가 모듈의 핵심 기능 구현'''에 더 많은 시간과 노력을 집중할 수 있도록 지원합니다. 이는 모듈 개발 과정을 더욱 효율적이고 사용자 친화적으로 만들어줍니다. ==모듈 외부 템플릿== GIthub 활용에 대한 내용이다. Github를 이용하여 개발할 경우, 모듈 빌더와 비슷한 내용과 과정을 거치고, 업데이트된 예제 코드를 사용할 수 있다. ==모듈 설명자 생성 == 모듈 설명자는 마치, 내 것인데, 남들이 더 많이 사용하는 '''이름'''과 같은 것이다. Dolibarr와 이것의 모듈 들이 신규로 생성되는 모듈이 어떤 것인지 알고 사용할 수 있도록 설명하는 내용이다. :*모듈 설명자 파일의 중요성: * 모듈 식별 및 활성화: 모듈 설명자 파일은 돌리바 시스템이 '''새로운 모듈을 인식하고 활성화할 수 있도록 하는 핵심적인 역할'''을 합니다. 이 파일에 정의된 정보 ('''모듈 이름, ID, 버전''' 등)를 바탕으로 돌리바는 모듈을 목록에 표시하고 사용자가 활성화/비활성화할 수 있도록 합니다. * 모듈 기본 정보 정의:모듈 설명자 파일은 개발하는 모듈의 기본적인 '''속성'''을 정의합니다. 여기에는 모듈의 '''고유 ID (`$this->numero`)''', '''버전 정보''', 그리고 기타 생성자 변수들이 포함됩니다. 특히 모듈 ID는 다른 모듈과의 충돌을 피하기 위해 신중하게 선택해야 하며, 이미 예약된 ID 목록을 참고해야 합니다. * 모듈 구성 요소 연결: 모듈 설명자 파일은 모듈이 제공하는 다양한 기능 (메뉴 항목, 권한, 설정 페이지, 박스, 내보내기 등)들을 돌리바 시스템에 연결하는 역할을 합니다. 예를 들어, `$this->menu` 배열을 통해 새로운 메뉴 항목을 정의하고, `$this->rights` 배열을 통해 새로운 권한을 정의합니다. * '''모듈 구조 정의:''' 모듈 설명자 파일은 모듈의 기본적인 구조를 나타내며, 관련 파일들이 어느 디렉토리에 위치하는지를 시스템에 알려줍니다. 예를 들어, CSS 파일 경로는 `$this->module_parts` 배열을 통해 정의됩니다. :*모듈 설명자 파일 생성 방법: * 수동 생성: 과거에는 개발자가 직접 `modMyModule.class.php` 파일을 생성하고 필요한 변수들을 수동으로 수정해야 했습니다. * `/htdocs/custom/` *mymodule* `/core/modules` (외부 모듈) 또는 `/htdocs/` *mymodule* `/core/modules` (코어 모듈) 디렉토리를 생성합니다. * `htdocs/modulebuilder/template` 디렉토리의 `modMyModule.class.php` 파일을 생성한 디렉토리로 복사하고, 모듈의 목적에 맞게 파일명을 변경합니다 (예: `modNewName.class.php`). 파일명은 반드시 `mod`로 시작하고 `.class.php`로 끝나야 합니다. * 복사한 파일의 내용을 수정하여 모듈의 목적에 맞는 값으로 `"modMyModule"` 부분을 모두 변경합니다. 이 값은 항상 `mod`로 시작하고 영문자만 포함해야 합니다. * `$this->numero` 변수의 값을 모듈 ID로 변경하고, 충돌을 피하기 위해 예약된 ID 목록을 확인합니다. * 생성자의 다른 변수들을 모듈의 특성에 맞게 수정합니다. * 모듈 빌더 사용:돌리바 버전 9.0부터는 표준 모듈로 제공되는 "모듈 빌더 (ModuleBuilder)" 모듈을 사용하여 모듈 설명자를 생성하는 것이 권장됩니다 * 모듈 목록에서 "모듈 빌더" 모듈을 활성화한 후, 화면 오른쪽 상단의 "벌레" 이미지를 클릭하여 접근할 수 있습니다. * 모듈 빌더를 사용하면 사용자 인터페이스를 통해 모듈 설명자의 다양한 속성을 설정하고 자동으로 파일을 생성할 수 있습니다. :* 모듈 설명자 파일 테스트: 모듈 설명자 파일을 생성하거나 수정한 후에는 돌리바 시스템에서 제대로 인식되는지 테스트해야 합니다. * 돌리바에 접속하여 '''설정 -> 모듈''' 페이지로 이동합니다. `$this->version` 속성을 설정했다면, 새로운 모듈이 목록에 표시되고 활성화/비활성화 옵션이 나타나야 합니다. * `$this->version` 속성을 `"develop"` 또는 `"experimental"`로 설정한 경우, **설정 -> 기타 설정** 페이지에서 `MAIN_FEATURES_LEVEL`을 적절한 값 (1 또는 2)으로 설정해야 모듈이 표시됩니다. :* 모듈 개발의 더 큰 맥락에서 모듈 설명자: 모듈 설명자 파일은 '''모듈 개발의 시작점'''이며, 이후의 모든 개발 작업의 '''기반'''이 됩니다. 이 파일이 올바르게 정의되지 않으면 돌리바 시스템은 개발된 모듈을 제대로 인식하거나 작동시킬 수 없습니다. * 이전에 논의했던 '''모듈 생성 도구 (Module Builder)''' 는 이러한 모듈 설명자 파일 생성을 자동화하거나 간소화하여 개발 편의성을 크게 향상시킵니다. * 또한 '''GitHub Dolibarr Module Modèle'''과 같은 외부 모듈 템플릿은 '''미리 구성된 모듈 설명자 파일의 예시를 제공'''하여 개발자가 이를 참고하고 자신의 모듈에 맞게 수정하는 과정을 용이하게 합니다. '''모듈 설명자 파일'''을 통해 모듈의 기본적인 정보와 시스템 내에서의 역할을 정의하고, 이후 개발될 다양한 기능들을 돌리바와 연결할 수 있게 됩니다. ==모듈 파일 경로 구조== 모듈 파일 구성 내용 :• mymodule/: 모듈의 루트 디렉토리로서, 다른 모든 하위 디렉토리를 포함합니다. PHP 페이지 및 기타 사용자 정의 하위 디렉토리를 포함할 수 있습니다. 메타패키지 모듈의 경우 metapackage.conf 파일을 이 디렉토리에 위치시켜야 합니다. :• mymodule/build/: 컴파일 또는 패키지 빌드와 관련된 개발 파일을 저장하는 데 사용됩니다. :• mymodule/core/triggers/: 모듈에서 제공하는 트리거 관련 파일을 포함합니다. :• mymodule/admin/: 모듈의 설정 페이지 관련 PHP 파일을 저장합니다. :• mymodule/class/: 모듈에서 사용되는 PHP 클래스 파일을 포함합니다. :• mymodule/css/: 모듈의 CSS 스타일 시트 파일을 저장합니다. :• mymodule/js/: 모듈의 자바스크립트 파일을 저장하여 새로운 기능을 추가할 수 있습니다. :• mymodule/docs/: 모듈의 문서 및 라이선스 파일을 제공합니다. :• mymodule/img/: 모듈에서 사용되는 이미지 파일을 저장합니다. :• mymodule/langs/xx_XX/: 언어 파일을 저장합니다. 최소한 en_US 언어 파일을 포함하는 것이 좋습니다. :• mymodule/lib/: 모듈에서 사용되는 라이브러리 파일을 포함합니다. :• mymodule/scripts/: 명령줄 도구 또는 스크립트 파일을 제공합니다. PHP 스크립트는 #!/usr/bin/env php로 시작해야 합니다. :• mymodule/sql/: 모듈에서 새로운 테이블 또는 인덱스를 추가하는 SQL 파일을 저장합니다. 데이터 관리용 data.sql 파일도 이 디렉토리에 위치합니다. :• mymodule/theme/mytheme/: 모듈 자체의 테마/스킨 파일을 제공하는 경우 사용됩니다. :• mymodule/core/boxes/: 홈페이지에 표시할 새로운 박스 관련 파일을 저장합니다. :• mymodule/core/tpl/: 모듈에서 기존 템플릿 파일(.tpl)을 덮어쓰기 위한 파일을 저장합니다. = DB, SQL= SQL 테이블 생성의 필요성: : • 모듈 자체 데이터 관리: 돌리바의 표준 버전에서 제공하지 않는 고유한 데이터를 관리해야 하는 경우, 해당 데이터를 저장하기 위한 SQL 테이블을 정의해야 합니다. SQL 파일 생성 방법: :• SQL 디렉토리: 모듈의 SQL 테이블 생성 및 데이터 로딩 스크립트는 모듈 디렉토리 내의 sql 하위 디렉토리 ("mymodule/sql")에 저장됩니다. 모듈 빌더를 사용하는 경우, 새로운 객체를 생성할 때 이 디렉토리와 SQL 파일이 자동으로 생성될 수 있습니다. :• 파일 명명 규칙: 테이블 생성 명령이 담긴 파일은 테이블당 하나의 llx_mytable.sql 형식으로 이름을 지정하는 것이 원칙입니다. 필요에 따라 인덱스 생성을 위한 llx_mytable.key.sql 파일을 추가할 수 있습니다. 기존 파일의 예시는 install/mysql/tables 디렉토리에서 확인할 수 있습니다. :• 데이터 파일: 초기 데이터 추가, 수정 또는 삭제를 위한 SQL 명령은 mymodule/sql/ 디렉토리 내의 data.sql 파일에 포함해야 합니다. :• 중요 규칙: ::◦ SQL 필드의 권장 타입과 이름은 [https://wiki.dolibarr.org/index.php?title=Language_and_development_rules#Table_and_fields_structures Language_and_development_rules#Table_and_fields_structures] 페이지를 참고해야 합니다. ::◦ 문자열에는 큰따옴표 대신 작은따옴표를 사용해야 합니다 (예: 'chaine', "chaine"` 아님). 큰따옴표는 PostgreSQL에서 특정 의미를 가집니다. ::◦ SQL 파일은 MySQL 데이터베이스에서 작동해야 합니다. 다른 데이터베이스 (PostgreSQL 등)의 파일은 유지 관리되지 않지만, 해당 데이터베이스 드라이버에 의해 즉석에서 읽고 변환됩니다. :• 테이블 로딩: 모듈 설명자 파일의 init 함수 내에서 $this->_load_tables('/mymodule/sql/'); 라인이 주석 처리되어 있지 않은지 확인해야 모듈 활성화 시 SQL 파일이 실행되어 테이블이 생성됩니다. SQL 파일 테스트: :• SQL 파일이 준비되면, 돌리바 모듈 설정 페이지에서 해당 모듈을 비활성화했다가 다시 활성화하여 SQL 스크립트가 제대로 실행되는지 테스트할 수 있습니다. 모듈 활성화 시 테이블이 다시 생성되어야 합니다. 그렇지 않은 경우, 스크립트를 직접 실행하거나 돌리바 로그를 확인해야 합니다. PHP DAO 클래스 생성: : • 목적: PHP DAO 클래스는 모듈의 자체 데이터를 관리하기 위한 CRUD (Create, Read, Update, Delete) 작업을 수행하는 메서드를 제공합니다. : • 생성 방법: ::◦ 모듈 빌더 권장: 모듈 빌더에서 객체를 생성하면 DAO PHP 파일이 자동으로 생성됩니다. 이는 가장 권장되는 방법입니다. ::◦ 수동 생성 (선택 사항): 기존 객체 클래스를 복사하여 수동으로 생성할 수도 있습니다. 예시는 htdocs/modulebuilder/templates/class/myobject.class.php에서 찾을 수 있습니다. 이 경우, 클래스 파일 내에서 정확한 모듈 이름과 테이블 이름을 사용하도록 수정하고, 모듈의 class 하위 디렉토리에 저장해야 합니다. :• CRUD 메서드: 생성된 DAO 클래스에는 테이블 행의 삽입 (insert), 조회 (fetch), 업데이트 (update), 삭제 (delete)를 위한 기본적인 CRUD 메서드가 이미 포함되어 있습니다. 돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 SQL 테이블 및 PHP DAO 클래스의 중요성: :• 데이터 관리의 핵심: 모듈이 자체 데이터를 효율적이고 안전하게 관리하기 위한 핵심적인 구성 요소입니다. SQL 테이블은 데이터를 영구적으로 저장하는 역할을 하며, PHP DAO 클래스는 이 데이터에 접근하고 조작하는 인터페이스를 제공합니다. :• 모듈 기능 확장: 표준 돌리바 기능 외에 새로운 데이터 구조와 기능을 추가할 수 있도록 합니다. 예를 들어, 특정 비즈니스 로직에 필요한 추가 정보를 저장하고 관리하는 데 사용될 수 있습니다. :• 모듈 독립성 및 재사용성: DAO 패턴을 사용하면 데이터 접근 로직이 비즈니스 로직에서 분리되어 코드의 유지보수성과 재사용성을 향상시킵니다. 데이터베이스 구조가 변경되더라도 DAO 클래스만 수정하면 되므로, 전체 코드에 미치는 영향을 최소화할 수 있습니다. :• 모듈 빌더 활용: 돌리바의 모듈 빌더는 SQL 테이블 설계와 기본적인 DAO 클래스 생성을 자동화하여 개발 과정을 더욱 효율적으로 만들어 줍니다. :• 데이터베이스 상호 작용: DAO 클래스를 사용하지 않고 직접 데이터베이스에 접근해야 하는 경우 (예: 복잡한 JOIN 또는 필터링), 제공된 출처의 예시처럼 $db 객체의 query, fetch_object 등의 메서드를 사용하여 SQL 쿼리를 실행하고 결과를 처리할 수 있습니다. 하지만 이러한 직접적인 데이터베이스 접근은 DAO 클래스를 사용하는 방식보다 유지보수성이 낮아질 수 있습니다. =화면 UI= ==탭 관리== ## 탭 관리에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 **탭 관리**를 돌리바 ERP CRM 모듈 개발에서 **선택적인 기능**으로 설명하며, 주로 **기존 객체 (송장, 주문, 견적 등) 보기 화면에 새로운 탭을 추가하거나 기존 탭을 제거**하고, **자체 모듈 페이지 내에 표준 객체의 탭 메뉴를 표시**하는 방법에 대해 다루고 있습니다. **새로운 탭 추가 및 기존 탭 제거:** * 모듈 설명자 파일에 정의된 **`$this->tabs` 배열**을 수정하여 객체 보기 화면에 새로운 탭을 추가하거나 기존 탭을 제거할 수 있습니다. * `$this->tabs` 배열은 여러 개의 문자열로 구성된 리스트이며, 각 문자열은 하나의 탭을 나타냅니다. * 각 문자열은 **":" (콜론)으로 구분된 6개의 부분**으로 이루어져 있습니다: 1. **파트 1:** 탭을 표시할 **객체 타입** (예: 'thirdparty', 'invoice', 'product', 'order' 등). 2. **파트 2:** 탭을 **추가**할 때는 **`+tabname1`** 과 같은 형식으로 고유한 코드를 지정하고, **제거**할 때는 **`-tabname`** 과 같이 기존 탭의 코드를 지정합니다. 3. **파트 3:** 탭의 **제목**입니다. 하드코딩된 문자열 또는 모듈 언어 파일에 정의된 번역 코드를 사용할 수 있습니다. 4. **파트 4:** 번역 코드가 정의된 **언어 파일** (`*.lang`)의 이름과 모듈명 (예: `mylangfile@mymodule`). `@mymodule`이 붙으면 모듈의 `langs/code_CODE/` 디렉토리에서, 그렇지 않으면 돌리바 기본 `langs/code_CODE/` 디렉토리에서 파일을 찾습니다. 5. **파트 5:** 탭의 **표시 조건**입니다. 예를 들어 특정 권한을 가진 사용자에게만 보이도록 설정하거나 (`$user->rights->mymodule->read`), 항상 보이도록 `1`을 설정할 수 있습니다. 6. **파트 6:** 탭을 클릭했을 때 **표시될 페이지의 URL**입니다 (`/mymodule/mypagetab1.php`). `__ID__` 문자열은 자동으로 해당 객체의 ID로 치환됩니다. * 기존 탭의 `'tabname'`을 확인하려면 `'core/lib/module.lib.php'` 파일의 `product_prepare_head` 함수 내에서 `$head[$h]` 부분을 참조해야 합니다. **자체 페이지에 표준 탭 메뉴 표시:** * 자체 모듈 페이지 내에 제품, 거래처 등 표준 객체의 모든 탭을 표시하려면 다음과 같은 단계를 따라야 합니다: 1. **필요한 파일 포함:** 각 객체 타입별로 해당하는 클래스 파일과 라이브러리 파일을 `require_once()` 를 사용하여 포함해야 합니다. 제공된 예시에는 거래처, 제품, 송장에 대한 파일 포함 예시가 있습니다. 2. **객체 생성 및 로드:** URL에서 전달된 ID를 이용하여 해당 객체 클래스의 인스턴스를 생성하고 `fetch()` 메서드를 사용하여 데이터베이스에서 객체 정보를 로드합니다. 3. **표시할 탭 목록 가져오기:** `XXX_prepare_head($obj)` 함수를 사용하여 표시할 탭 정의 배열을 가져옵니다. `XXX`는 객체 이름이며, 함수에 로드된 객체 인스턴스를 파라미터로 전달합니다. 4. **탭 표시:** `dol_fiche_head()` 함수를 사용하여 가져온 탭 배열 (`$head`)을 화면에 표시합니다. 활성화할 탭, 제목, 아이콘 등을 설정할 수 있습니다. * `dol_fiche_head()` 함수는 탭 영역 아래에 해당하는 HTML `<div>` 요소를 시작하며, 탭 영역을 닫으려면 PHP 페이지에서 `</div>` 태그를 사용해야 합니다. **돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 탭 관리의 중요성:** * **사용자 인터페이스 맞춤화:** 탭 관리를 통해 모듈 개발자는 **기존 돌리바 인터페이스를 확장하고 맞춤화**하여 사용자가 필요한 정보에 더욱 쉽고 빠르게 접근할 수 있도록 합니다. 새로운 기능을 제공하는 모듈에서 관련 정보를 별도의 탭으로 구성하여 **정보를 논리적으로 그룹화**하고 사용자 경험을 향상시킬 수 있습니다. * **정보 구성 및 접근성 향상:** 특히 많은 정보를 표시해야 하는 객체 화면에서 탭을 사용하면 **화면을 깔끔하게 유지**하고 **사용자가 원하는 정보만 선택적으로 볼 수 있도록** 돕습니다. 예를 들어, 특정 모듈에서 관리하는 추가 정보 필드를 기존 객체 화면의 새로운 탭에 통합하여 사용성을 높일 수 있습니다. * **기존 돌리바 객체와의 통합:** 모듈에서 추가하는 기능이 기존 돌리바 객체와 관련이 있을 때, 탭 관리를 통해 **자체 기능을 기존 워크플로우에 자연스럽게 통합**할 수 있습니다. 예를 들어, 특정 프로젝트 관련 정보를 주문 또는 송장 화면의 새로운 탭에서 보여주는 방식으로 통합할 수 있습니다. * **모듈 기능의 확장:** 새로운 탭을 통해 모듈은 **추가적인 정보 표시, 데이터 편집, 또는 특정 액션 실행을 위한 사용자 인터페이스를 제공**할 수 있습니다. 이는 모듈의 기능을 더욱 풍부하게 만들고 사용자에게 더 많은 가치를 제공합니다. * **일관성 유지:** 자체 모듈 페이지에서 `dol_fiche_head()` 함수를 사용하여 표준 탭 메뉴를 표시함으로써, **돌리바의 전반적인 사용자 인터페이스와 일관성을 유지**하고 사용자의 혼란을 줄일 수 있습니다. **결론적으로, 탭 관리는 돌리바 ERP CRM 모듈 개발에서 **사용자 인터페이스를 개선하고 정보를 효율적으로 구성하며, 모듈의 기능을 기존 돌리바 시스템에 자연스럽게 통합하는 데 중요한 역할**을 합니다. `$this->tabs` 배열을 이용한 탭 추가/제거와 `dol_fiche_head()` 함수를 활용한 표준 탭 표시 기능은 모듈 개발자가 더욱 편리하고 사용자 친화적인 모듈을 만들 수 있도록 지원합니다.** ==PHP 화면 생성 및 수정 == ## PHP 화면 생성 또는 수정에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **PHP 화면을 생성하거나 수정하는 것**을 **선택적인 기능**으로 설명하며, 주로 **새로운 기능을 구현하기 위해 필요한 사용자 인터페이스를 구축하거나 기존 화면에 추가적인 필드를 통합**하는 방법에 대해 다루고 있습니다. **새로운 PHP 화면 생성:** * 모듈의 목적이 새로운 기능을 추가하여 새로운 화면이 필요한 경우, PHP 화면을 생성해야 합니다. * 새로운 사용자 화면을 생성하려면 모듈 디렉토리 내에 (예: `/htdocs/mymodule/`) PHP 파일을 저장할 하위 디렉토리를 생성해야 합니다. * **`modulebuilder/myobject_page.php`** 에 제공된 스켈레톤 템플릿 파일을 복사하여 새로운 페이지 파일의 시작점으로 사용할 수 있습니다. * 새로운 PHP 파일에서 **`main.inc.php` 파일을 로드**하는 것이 중요합니다. 이 파일은 돌리바 환경 변수와 권한을 로드하며 `$user`, `$conf`, `$db`, `$langs` 객체를 포함합니다. 제공된 코드 예시는 다양한 상황에서 `main.inc.php` 파일을 로드하기 위한 여러 시도를 보여줍니다. * 모듈에 특화된 클래스나 라이브러리를 포함하려면 직접 `include_once`를 사용하는 대신 **`dol_include_once()` 함수**를 사용해야 합니다. 돌리바에서 제공하는 클래스를 포함하려면 `require_once DOL_DOCUMENT_ROOT . '/core/class/doli.class.php';` 와 같은 구문을 사용합니다. * 화면 표시를 위한 코드는 `main.inc.php` 로드 후 추가해야 합니다. * 명령행 스크립트 개발은 별도의 안내를 참조해야 합니다. **기존 폼 수정:** * 기존 요소 (예: 카테고리, 송장, 견적 등)의 폼에 더 많은 필드를 추가해야 할 수 있습니다. * **무거운 해결책**으로는 해당 요소 생성에 사용되는 모든 페이지를 **자체 페이지로 대체**하는 방법이 있습니다. 이는 "새 요소" 메뉴 항목을 비활성화하고 자체 항목을 추가하며, 기존 탭을 자체의 전체 페이지로 대체하는 것을 의미합니다. 이 방법은 페이지의 모든 것을 변경할 수 있다는 장점이 있지만, 더 많은 작업이 필요합니다. * **더 가벼운 해결책**으로는 **훅 시스템**을 사용하여 기존 필드의 끝에 필드를 추가하는 방법이 있습니다. 이를 위해서는 새로운 필드의 값을 저장할 자체 테이블을 만들고 CRUD (Create/Read/Update/Delete) 메서드를 가진 클래스를 생성해야 합니다. 그런 다음 훅을 사용하여 폼에 새로운 필드를 추가합니다. 훅 사용에 대한 일반적인 문서는 [Hooks_system#Implement_the_Hook](https://wiki.dolibarr.org/index.php?title=Hooks_system#Implement_the_Hook) 장을 참조해야 합니다. **데이터베이스 접근:** * 자체 테이블의 데이터를 편집하려면 이전에 생성한 PHP 클래스를 사용합니다. * 전용 PHP 클래스가 없는 테이블에 접근해야 하는 경우 (예: 특정 JOIN 또는 필터를 사용하여 레코드 목록을 가져오려는 경우), `$db` 객체를 사용하여 직접 SQL 쿼리를 실행할 수 있습니다. 삽입, 업데이트, 삭제를 위한 트랜잭션 처리 예시와 데이터를 읽기 위한 코드 예시가 제공됩니다. **페이지 스타일 정의:** * 자체 페이지의 모양을 돌리바 테마와 일치시키려면 **돌리바 CSS 스타일**을 사용해야 합니다. `liste_titre`, `pair`, `impair`, `flat`, `button` 등의 CSS 클래스 사용 예시가 제공됩니다. **돌리바 날짜 선택기 사용:** * 자체 페이지에서 돌리바 날짜 선택기 (달력 팝업)를 사용하려면 `$form = new Form($db);` 를 사용하여 `Form` 클래스의 인스턴스를 생성하고 `$form->select_date()` 메서드를 호출해야 합니다. 날짜 선택기는 HTML `<form>` 내에 포함되어야 하며, 폼 전송 후 값을 가져오는 방법도 설명되어 있습니다. **템플릿 파일 (tpl) 덮어쓰기:** * 모듈에서 tpl 파일을 덮어쓰려면 모듈 설명자의 `$this->module_parts` 배열에 `'tpl' => 1` 을 선언한 후, 덮어쓸 tpl 파일을 `mymodule/core/tpl` 디렉토리에 넣으면 됩니다. **돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 PHP 화면 생성 및 수정의 중요성:** * **기능 확장 및 맞춤화:** PHP 화면 생성 및 수정은 돌리바의 기본 기능을 넘어서는 **새로운 비즈니스 로직 및 데이터 관리 기능을 구현**하는 데 필수적입니다. 모듈 개발자는 이를 통해 특정 요구 사항에 맞는 사용자 인터페이스를 구축하고 워크플로우를 맞춤화할 수 있습니다. * **사용자 경험 향상:** 잘 설계된 PHP 화면은 사용자에게 **직관적이고 효율적인 작업 환경**을 제공하여 전반적인 사용자 경험을 향상시킵니다. 새로운 정보를 표시하거나 기존 정보를 편집하는 방식을 개선하여 사용 편의성을 높일 수 있습니다. * **데이터 관리 효율성 증대:** 새로운 화면을 통해 모듈은 **특정 데이터를 효과적으로 수집, 표시 및 관리**할 수 있도록 합니다. 이는 데이터의 정확성을 높이고 정보 접근성을 향상시켜 업무 효율성을 증대시킵니다. * **기존 시스템과의 통합:** 폼 수정 기능을 통해 모듈은 **자체 기능을 기존 돌리바 시스템의 흐름에 통합**할 수 있습니다. 예를 들어, 기존 주문 생성 화면에 추가적인 정보를 입력받는 필드를 추가하여 모듈의 기능을 자연스럽게 사용할 수 있도록 합니다. * **다양한 사용자 인터페이스 제공:** 새로운 PHP 화면과 스타일 정의를 통해 모듈은 **다양한 형태와 기능의 사용자 인터페이스**를 제공할 수 있습니다. 이는 다양한 사용자의 요구 사항을 충족시키고 모듈의 활용도를 높입니다. **결론적으로, PHP 화면 생성 및 수정은 돌리바 ERP CRM 모듈 개발에서 **핵심적인 부분**을 차지하며, 모듈의 **기능 확장, 사용자 경험 향상, 데이터 관리 효율성 증대**에 직접적으로 기여합니다. 개발자는 제공된 가이드라인과 돌리바의 개발 규칙을 준수하여 안정적이고 사용자 친화적인 모듈을 개발해야 합니다.** ==자체 설정 페이지 추가== ## 자체 설정 페이지 추가 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 설정 페이지를 추가하는 것**을 **선택적인 기능**으로 설명하며, 모듈의 **적절한 설정을 위해 사용자가 제공해야 하는 파라미터가 필요한 경우**에 해당됩니다. **자체 설정 페이지 추가 방법:** * **필요 조건:** 모듈이 여러 설정 파라미터를 필요로 하는 경우, 이러한 옵션을 편집하고 **`llx_const` 테이블**에 저장할 페이지를 생성해야 합니다. * **페이지 생성:** **`mymodule_setuppage.php`** 와 같은 이름의 PHP 페이지를 생성하여 설정 옵션을 업데이트할 수 있는 폼을 표시합니다. 파라미터를 읽고 저장하는 방법을 참고하기 위해 **/admin** 디렉토리의 기존 페이지를 활용하는 것이 좋습니다. 이 PHP 페이지는 모듈의 **/admin** 디렉토리 (예: `mymodule/admin/mymodule_setuppage.php`)에 위치해야 합니다. * **모듈 설명자 파일 수정:** 모듈의 설명자 파일 내에서 **`config_page_url`** 변수를 수정하여 이 PHP 페이지의 이름을 설정해야 합니다. * 페이지가 **/admin/** 디렉토리에 있는 경우, 경로는 필요하지 않습니다 (예: `$this->config_page_url = array("mymodule_setuppage.php");`). * 페이지가 **/mymodule/admin/** 디렉토리에 있는 경우, `@mymodule` 를 포함하여 경로를 지정해야 합니다 (예: `$this->config_page_url = array("mymodule_setuppage.php@mymodule");`). * **페이지 테스트:** **홈->설정->모듈** 페이지로 이동하면 모듈 라인의 끝에 설정 페이지로 이동하는 그림이 나타납니다. 이를 클릭하면 설정 페이지에서 파라미터를 보고 편집할 수 있어야 합니다. == 메뉴 항목 정의 == 개발한 **PHP 페이지를 돌리바 메뉴를 통해 접근 가능하게 만들 필요가 있을 경우**에 해당됩니다. **자체 메뉴 항목 정의 방법:** * **모듈 설명자 파일 수정:** 자체 메뉴 항목을 정의하려면 모듈 설명자 파일 내의 **`$this->menu` 배열**을 수정해야 합니다. 이 배열은 모듈이 활성화되면 나타날 메뉴 항목들을 선언합니다. * **`$this->menu` 배열 구조:** `$this->menu` 배열은 각 메뉴 항목에 대한 정보를 담는 연관 배열로 구성됩니다. 주요 속성은 다음과 같습니다: * **`fk_menu`**: 상위 메뉴의 ID를 지정합니다. 최상위 메뉴인 경우 **`0`** 을 설정합니다. 하위 메뉴인 경우 **`'fk_mainmenu=xxx'`** 또는 **`'fk_mainmenu=xxx,fk_leftmenu=yyy'`** 와 같은 형식으로 상위 메뉴 코드를 지정합니다. * **`type`**: 메뉴 항목의 유형을 지정합니다. 최상위 메뉴는 **`'top'`**, 왼쪽 메뉴는 **`'left'`** 로 설정합니다. * **`titre`**: 메뉴에 표시될 제목입니다. **언어 파일(`langs`)** 에서 번역 키를 사용하여 다국어 지원을 구현하는 것이 좋습니다. * **`mainmenu`**: 최상위 메뉴의 고유 코드입니다. * **`leftmenu`**: 왼쪽 메뉴의 고유 코드입니다. 최상위 메뉴의 경우 `mainmenu` 와 동일한 값을 사용하거나 필요에 따라 다른 값을 설정할 수 있습니다. * **`url`**: 메뉴 항목을 클릭했을 때 이동할 PHP 페이지의 경로입니다. 모듈 디렉토리를 기준으로 하는 상대 경로를 사용합니다 (예: `/mymodule/pagetop.php`). * **`langs`**: 메뉴 제목에 사용될 언어 파일의 이름 (확장자 `.lang` 제외)입니다. 해당 언어 파일은 `langs/code_CODE/` 디렉토리에 위치해야 합니다. * **`position`**: 메뉴 항목의 표시 순서를 결정하는 숫자입니다. * **`enabled`**: 메뉴 항목을 표시할지 여부를 결정하는 조건입니다. `'1'` 로 설정하면 항상 표시됩니다. 모듈 활성화 여부에 따라 표시하려면 **`'$conf->mymodule->enabled'`** 와 같은 설정을 사용할 수 있습니다. * **`perms`**: 메뉴 항목에 접근할 수 있는 권한을 정의합니다. `'1'` 로 설정하면 모든 활성 사용자에게 표시됩니다. 특정 권한이 있는 사용자에게만 표시하려면 **`'perms'=>'$user->rights->mymodule->level1->level2'`** 와 같은 형식으로 권한 규칙을 지정합니다. 권한 정의에 대한 자세한 내용은 출처의 뒷부분을 참고하십시오. * **`target`**: 링크의 타겟 속성입니다 (예: `'_blank'`). * **`user`**: 메뉴 항목이 내부 사용자 (`0`), 외부 사용자 (`1`), 또는 둘 다 (`2`)에게 표시될지 여부를 지정합니다. * **메뉴 항목 테스트:** 모듈 설정 페이지에서 모듈을 비활성화했다가 다시 활성화하면 `$this->menu` 배열의 `'enabled'` 속성 설정에 따라 메뉴 항목이 나타나야 합니다. ==자체 권한 추가== ## 자체 권한 추가에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 권한을 추가하는 것**이 모듈의 기능을 세밀하게 제어하고 보안을 강화하는 데 중요한 선택적 기능임을 설명합니다. 자체 권한은 모듈에서 제공하는 특정 기능이나 데이터에 대한 접근을 관리하는 데 사용됩니다. **자체 권한을 추가하는 방법:** * **모듈 설명자 파일 수정:** 자체 권한을 정의하는 과정은 이전에 생성한 모듈 설명자 파일에서 시작됩니다. * **`$this->rights_class` 변수 설정:** 먼저 **`$this->rights_class`** 변수를 모듈의 고유한 이름으로 설정해야 합니다. 이는 권한 그룹을 식별하는 데 사용됩니다. 예를 들어, 모듈 이름이 'mymodule'이라면 `$this->rights_class = 'mymodule';` 와 같이 설정합니다. * **`$this->rights` 배열 채우기:** 그런 다음 **`$this->rights` 배열**에 필요한 권한 수만큼 항목을 추가합니다. 각 권한은 하위 배열로 정의되며 다음 요소들을 포함합니다: * `$this->rights[$r]`: **고유한 권한 ID**입니다. 표준 모듈에서 이미 사용 중인 ID를 피하기 위해 Dolibarr 설치의 **시스템 정보** 메뉴에서 사용 중인 ID 목록을 확인하는 것이 좋습니다. * `$this->rights[$r]`: 권한에 대한 **기본 레이블**입니다. 이 레이블은 언어 파일 (`admin.lang`)에서 번역을 찾을 수 없을 경우에 사용됩니다. 번역 키는 "Permission\[권한 ID]=\[레이블]" 형식을 따릅니다 (예: "Permission10001=My permission Label"). * `$this->rights[$r]`: **권한 유형**입니다. `'r'` (읽기, 목록, 전문가 권한), `'w'` (쓰기, 업데이트 권한), `'d'` (삭제 권한) 중 하나를 선택합니다. * `$this->rights[$r]`: 새로 생성된 모든 사용자에게 이 권한을 **기본적으로 부여할지 여부**를 결정합니다. `1`로 설정하면 기본적으로 부여됩니다. * `$this->rights[$r]`: 공백 없는 **액션 문자열**입니다. * `$this->rights[$r]`: 공백 없는 **서브 액션 문자열**입니다. * `$r++ ;`: 각 권한을 정의한 후 인덱스 `$r`을 증가시켜 다음 권한을 위한 공간을 확보합니다. * **PHP 코드에서 권한 확인:** 정의된 권한이 있는지 확인하려면 PHP 코드 내에서 다음과 같은 구조를 사용합니다: ```php if ($user->rights->mymodule->action->subaction) { // 사용자가 해당 권한을 가지고 있을 때 실행할 코드 } ``` ==자체 박스 정의== ## 자체 박스 정의에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 박스를 정의하는 것**이 홈페이지에 새로운 정보 위젯을 추가하여 **사용자에게 맞춤형 정보나 기능 바로가기를 제공할 수 있는 선택적인 기능**임을 설명합니다. **자체 박스를 정의하는 방법:** * **모듈 설명자 파일 수정:** 자체 박스를 정의하려면 모듈 설명자 파일 내의 **`$this->boxes` 배열**을 수정해야 합니다. 각 박스 파일에 대해 다음 두 줄을 추가합니다: * `$this->boxes[$n]['file'] = 'myboxn.php@mymodule'` : **박스 파일의 경로와 이름**을 지정합니다. `@mymodule` 은 해당 파일이 모듈의 `htdocs/mymodule/core/boxes` 디렉토리에 있음을 나타냅니다. * `$this->boxes[$n]['note'] = 'My box n'` : 박스에 대한 **설명 또는 주석**을 제공합니다. 이 설명은 Dolibarr 설정 페이지에서 박스를 식별하는 데 사용될 수 있습니다. * **박스 PHP 파일 생성:** `htdocs/mymodule/core/boxes/` 디렉토리에 실제 박스 내용을 표시하는 PHP 파일 (`mybox0.php`, `mybox1.php` 등)을 생성해야 합니다. 출처는 기존 박스 파일 (`htdocs/core/boxes` 디렉토리에서 찾을 수 있음)의 **예시를 복사하여 시작**할 것을 권장합니다. * **박스 감지 및 테스트:** 모듈을 비활성화했다가 다시 활성화하면 Dolibarr가 새로운 박스를 감지합니다. **홈 - 설정 - 박스** 메뉴로 이동하여 정의한 박스가 목록에 나타나는지 확인하고, 활성화한 후 홈페이지에서 박스가 올바르게 표시되는지 테스트해야 합니다. ==자체 내보내기 정의== ## 자체 내보내기 정의에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 내보내기를 정의하는 것**이 개발한 모듈 또는 기존 모듈의 데이터에 대한 **맞춤형 내보내기 프로필을 제공**하여 사용자가 필요한 형식과 내용으로 데이터를 추출할 수 있도록 하는 **선택적인 기능**임을 설명합니다. **자체 내보내기를 정의하는 방법:** * **모듈 설명자 파일 수정:** 자체 내보내기를 정의하려면 모듈 설명자 파일 내의 **`$this->export_xxx` 배열**을 주석 해제하고 수정해야 합니다. 여기서 `xxx`는 내보내기 유형을 나타내는 식별자가 될 수 있습니다. * **내보내기 정의 테스트:** 모듈을 활성화한 후 **도구 -> 내보내기** 메뉴로 이동하면 정의한 내보내기가 사용 가능한 사전 정의된 내보내기 목록에 나타납니다. 이를 선택하면 내보내기 배열에 정의된 모든 가능한 필드 목록이 표시됩니다. 필드를 선택하고 내보내기 파일을 생성하여 작동하는지 테스트해야 하며, 모든 필드를 포함하여 다시 시도해 볼 수 있습니다. ==CSS 스타일 정의== ## CSS 스타일 정의에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 CSS 스타일을 정의하는 것**이 모듈의 PHP 페이지 외관을 돌리바 테마와 일치시키거나, 필요한 경우 **새로운 스타일을 추가**하는 선택적인 기능임을 설명합니다. **자체 CSS 스타일을 정의하는 방법:** * **CSS 파일 생성:** `htdocs/mymodule/` 디렉토리에 `mymodule.css` 또는 `mymodule.css.php`라는 이름으로 스타일시트 파일을 생성합니다. 모듈당 여러 개의 CSS 파일을 가질 수 있습니다. * **기존 스타일 활용 권장:** 출처는 **가능하면 Dolibarr 기본 테마에서 제공하는 기존 스타일을 사용하는 것을 권장**합니다. Dolibarr에서 사용되는 CSS 파일은 `themes/mytheme/*themename*/.css.php`입니다. * **새로운 스타일 필요 시에만 정의:** 부득이하게 기존에 없는 스타일을 추가해야 하는 경우에만 자체 CSS 파일을 생성해야 합니다. * **모듈 설명자 파일에 선언:** 생성한 CSS 파일을 모듈 설명자 파일의 **`$this->module_parts` 속성**을 수정하여 선언해야 합니다. 값은 CSS 파일의 상대 URL 배열 형태로 지정합니다. 예를 들어 다음과 같습니다: ```php $this->module_parts = array( 'css' => array('/mymodule/css/mymodule.css.php', '/mymodule/css/myother.css') ); ``` * **테스트:** 모듈을 비활성화했다가 다시 활성화한 후 홈페이지 (index.php)의 HTML 소스를 확인합니다. HTML 헤더에 정의한 스타일시트를 선언하는 `<link>` 태그가 나타나야 합니다. ==Javascript 함 수 추가== ## Javascript 함수 추가에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 Javascript 함수를 추가하는 것**이 모듈의 PHP 페이지에 **Dolibarr에서 기본적으로 제공하지 않는 동적인 기능이나 사용자 인터랙션을 구현**하는 데 필요한 선택적인 기능임을 설명합니다. **자체 Javascript 함수를 추가하는 방법:** * **Javascript 파일 생성:** `htdocs/mymodule/js/` 디렉토리에 `mymodule.js`라는 이름으로 Javascript 파일을 생성하고, 필요한 함수들을 정의합니다. 모듈당 여러 개의 Javascript 파일을 가질 수 있습니다. * **`llxHeader()` 함수를 통한 포함 요청:** 모듈의 PHP 페이지에서 **`llxHeader()` 함수를 호출할 때 `$morejs` 파라미터**를 사용하여 Javascript 파일을 포함하도록 Dolibarr에 요청해야 합니다. `$morejs`는 포함할 Javascript 파일의 상대 URL 배열입니다. 다음은 `/htdocs/mymodule/mypage.php` 페이지에서 `mymodule.js` 파일을 포함하는 예시입니다: ```php $morejs = array("/mymodule/js/mymodule.js"); llxHeader('', 'Titre', '', '', '', '', $morejs, '', 0, 0); ``` * 이렇게 하면 Dolibarr가 HTML `<HEAD>` 섹션에 사용자가 정의한 Javascript 파일을 포함하는 `<script>` 태그를 생성합니다. =동작 삽입= ==Dolibarr 이벤트에 코드 실행(트리거)== ## 돌리바 이벤트에 코드 실행 (트리거)에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **특정 돌리바 이벤트가 발생했을 때 사용자가 정의한 코드를 실행할 수 있는 기능**, 즉 **트리거**에 대해 설명합니다. **트리거의 개념 및 사용 방법:** * 출처에 따르면, **"특정 돌리바 액션이 자동으로 트리거될 때 코드를 실행"** 하고자 하는 경우에 트리거를 생성해야 합니다. * **예시:** 송장이 돌리바에 생성될 때 모듈 내의 사용자 정의 테이블을 업데이트하는 경우를 들 수 있습니다. * 더 자세한 정보는 **Interfaces\_Dolibarr\_toward\_foreign\_systems** 및 **Interfaces\_from\_foreign\_systems\_toward\_Dolibarr** 페이지를 참고하도록 안내하고 있습니다. ==Dolibarr hook 위치에 코드 삽입== ## 돌리바 훅 위치에 코드 삽입에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **훅(hooks) 시스템을 활용하여 특정 위치에 사용자 정의 코드를 삽입하거나 기존 코드를 대체하는 기능**에 대해 설명합니다. **훅 시스템의 개념 및 사용 방법:** * 출처에 따르면, 훅 위치에 코드를 삽입하는 것은 **"비즈니스 이벤트 외의 다른 상황에서 돌리바 코드를 추가하거나 대체"** 하고자 할 때 사용됩니다. * 이전 쿼리에서 논의된 **트리거가 특정 비즈니스 이벤트 발생 시 코드를 실행**하는 것과 달리, 훅은 **더욱 다양한 상황과 위치**에서 코드 실행을 가능하게 합니다. * 더 자세한 정보는 **Hooks\_system** 페이지를 참고하도록 안내하고 있습니다. * 출처 3.5.3에서는 훅을 통해 **지원되는 필드의 일부를 추가/대체**하는 방법을 언급하며, 26에서는 훅을 사용하여 **기존 폼에 새로운 필드를 추가**하는 방법을 예시로 설명합니다. ==자체 번호 매기기 규칙 추가== ## 자체 번호 매기기 규칙 추가에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 번호 매기기 규칙을 추가하는 기능**에 대해 간략하게 언급하고 있으며, 이는 돌리바의 기본 번호 매기기 규칙 외에 **사용자 정의된 방식으로 문서 또는 기타 객체의 참조 번호를 생성**하고자 할 때 유용합니다. **자체 번호 매기기 규칙 추가의 개념 및 방법:** * 출처의 기능 목록에는 **"객체의 참조 생성을 위한 새로운 번호 매기기 규칙 추가"** 가 포함되어 있습니다. 이는 모듈 개발자가 돌리바의 다양한 객체(예: 송장, 주문, 견적 등)에 대해 자신만의 특정 형식이나 로직을 가진 참조 번호 생성 규칙을 정의할 수 있음을 나타냅니다. * 출처에서는 **"기존 규칙으로 처리되지 않는 요소의 참조 생성을 위한 새로운 규칙이 필요할 때"** 자체 번호 매기기 규칙을 추가해야 한다고 명시합니다. * 또한, 더 자세한 내용은 **"Create numbering module"** 페이지를 참조하도록 안내하고 있습니다. 이는 자체 번호 매기기 규칙을 추가하는 것이 **별도의 모듈 개발**과 관련될 수 있음을 시사합니다. **트리거 및 훅과의 관계:** 자체 번호 매기기 규칙은 **트리거**나 **훅**과 함께 사용되어 더욱 강력한 기능을 구현할 수 있습니다. 예를 들어: * 특정 이벤트(예: 주문 상태 변경)가 발생하면 **트리거**가 작동하여 사용자 정의 번호 매기기 규칙에 따라 새로운 참조 번호를 생성하고 문서에 할당할 수 있습니다. * **훅**을 사용하여 문서 생성 또는 수정 시점에 사용자 정의 번호 매기기 로직을 삽입하여 기본 번호 생성 방식을 대체하거나 보완할 수 있습니다. **결론적으로, 돌리바 ERP CRM 모듈 개발에서 자체 번호 매기기 규칙을 추가하는 기능은 **기업의 고유한 비즈니스 요구 사항을 충족시키고 문서 관리의 효율성을 높이며 외부 시스템과의 연동을 용이하게 하는 중요한 요소**입니다. 이는 돌리바의 **유연성**과 **확장성**을 더욱 강화하며, 트리거 및 훅과 같은 다른 모듈 개발 요소들과 함께 활용되어 더욱 **맞춤화된 돌리바 환경**을 구축하는 데 기여합니다.** ==문서 템플릿 추가== ## 문서 템플릿 추가에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 문서 템플릿을 추가하는 기능**에 대해 언급하며, 이는 돌리바에서 생성되는 **PDF 또는 ODT 형식의 문서를 사용자 정의된 레이아웃과 디자인으로 제작**하고자 할 때 매우 중요합니다. **문서 템플릿 추가의 개념 및 방법:** * 출처의 기능 목록에는 **"새로운 문서 템플릿 추가"** 가 명시되어 있습니다. 이는 모듈 개발자가 돌리바의 기본 문서 템플릿 외에 **기업의 브랜드 아이덴티티, 특정 보고서 형식, 또는 법적 요구 사항** 등을 반영하는 사용자 정의 템플릿을 추가할 수 있음을 의미합니다. * 출처는 **"생성된 PDF 또는 ODT 문서를 개인화하고 싶을 때"** 문서 템플릿을 추가해야 한다고 설명합니다. * **중요한 점은 문서 템플릿을 추가하는 데 모듈 설명자(module descriptor)를 생성할 필요가 없다는 것입니다**. 이는 비교적 독립적인 기능임을 시사합니다. * 문서 템플릿 추가에 대한 자세한 내용은 **"Create\_a\_PDF\_document\_template"** 또는 **"Create\_an\_ODT\_document\_template"** 페이지에서 확인할 수 있다고 안내합니다. **트리거 및 훅과의 관계:** 문서 템플릿 추가 기능은 **트리거**나 **훅**과 연동하여 더욱 강력한 자동화 기능을 구현할 수 있습니다. 예를 들어: * 특정 이벤트(예: 송장 결제 완료) 발생 시 **트리거**가 작동하여 자동으로 사용자 정의된 감사 보고서 템플릿을 기반으로 문서를 생성하고 관련 담당자에게 발송할 수 있습니다. * **훅**을 사용하여 문서 생성 과정의 특정 시점에 사용자 정의 로직을 삽입하여 템플릿에 동적으로 데이터를 추가하거나 수정할 수 있습니다. **결론적으로, 돌리바 ERP CRM 모듈 개발에서 자체 문서 템플릿을 추가하는 기능은 **기업의 브랜드 아이덴티티를 강화하고 특정 비즈니스 요구 사항을 충족하며 문서 관리 효율성을 높이는 데 필수적인 요소**입니다. 모듈 설명자 없이 독립적으로 추가할 수 있다는 점은 이 기능의 유연성을 더하며, 트리거 및 훅과 같은 다른 개발 요소들과 함께 활용되어 더욱 **자동화되고 맞춤화된 문서 처리 환경**을 구축하는 데 중요한 역할을 합니다.** ==스킨 추가== ## 스킨 추가에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발에서 **자체 스킨을 추가하는 기능**에 대해 언급하며, 이는 돌리바의 **색상, 글꼴, 이미지 등 사용자 인터페이스의 외관을 개인화**하고자 할 때 유용합니다. **스킨 추가의 개념 및 방법:** * 출처의 기능 목록에는 **"새로운 스킨 추가"** 가 포함되어 있습니다. 이는 모듈 개발자가 돌리바의 기본 테마 외에 **자신만의 시각적 스타일**을 적용할 수 있음을 의미합니다. * 출처는 **"자신의 색상/글꼴/이미지로 개인화하고 싶을 때"** 스킨을 추가해야 한다고 설명합니다. * **중요한 점은 스킨을 추가하는 데 모듈 설명자(module descriptor)를 생성할 필요가 없다는 것입니다**. 이는 스킨 변경이 기능적인 확장보다는 **외관 변경에 집중**되어 있기 때문입니다. * 자체 스킨 추가에 대한 자세한 내용은 **"Skins"** 페이지를 참조하도록 안내하고 있습니다. **모듈 설명자와의 독립성:** 출처에서 스킨 추가에 모듈 설명자가 필요 없다고 명시한 점은 스킨 기능이 **돌리바의 핵심 기능이나 데이터 구조에 직접적인 영향을 미치지 않는 독립적인 요소**임을 시사합니다. 이는 돌리바의 **모듈화된 구조**를 보여주는 한 예시로, 외관 변경과 기능 확장을 분리하여 관리할 수 있도록 설계되었음을 의미합니다. **결론적으로, 돌리바 ERP CRM 모듈 개발에서 자체 스킨을 추가하는 기능은 **사용자 경험을 향상시키고, 브랜드를 강화하며, 접근성을 높이는 데 중요한 역할**을 합니다. 기능적인 확장과는 별개로 **돌리바의 시각적인 측면을 사용자 및 기업의 요구에 맞게 맞춤화**할 수 있도록 지원하며, 이는 돌리바를 더욱 **유연하고 매력적인 솔루션**으로 만들어줍니다.** ==코딩 규칙 및 미리 정의 된 함수== ## 코딩 규칙 및 미리 정의된 함수에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발의 중요한 측면인 **코딩 규칙**과 개발자가 활용할 수 있는 **미리 정의된 함수**에 대해 간략하게 언급합니다. 이러한 요소들은 돌리바 모듈 개발의 품질, 효율성 및 유지 보수성에 큰 영향을 미칩니다. **코딩 규칙:** * 출처는 **"몇 가지 코딩 규칙 및 미리 정의된 함수"** 섹션을 통해 코딩 규칙이 **"개발자 문서의 '일반 정보 - 언어 및 표준 개발' 섹션에 정의되어 있다"** 고 명시합니다. * 이는 돌리바 개발에 참여하는 모든 개발자가 **일관된 코딩 스타일과 표준을 준수**해야 함을 강조합니다. **미리 정의된 함수:** * 출처는 또한 개발자를 위한 많은 **미리 정의된 기능이 존재하며, 이는 "개발자 문서의 '돌리바 기술 컴포넌트' 섹션에 설명되어 있다"** 고 밝힙니다. * 이는 돌리바가 모듈 개발자가 **기존의 강력한 기능들을 재사용**하여 개발 과정을 효율적으로 진행할 수 있도록 다양한 유틸리티 함수와 API를 제공한다는 것을 의미합니다. * 예시로, 새로운 PHP 화면 생성 섹션에서 **`dol_include_once()` 함수를 사용하여 모듈의 클래스나 라이브러리를 포함**하는 방법, 그리고 데이터베이스 상호 작용 섹션에서 **`$db` 객체를 사용하여 데이터베이스 쿼리를 실행**하는 방법 등이 간접적으로 미리 정의된 함수의 활용 사례를 보여줍니다. * 또한, **`llxHeader()` 함수를 사용하여 HTML 헤더에 자바스크립트 파일을 포함**시키는 방법, **`Form` 클래스의 `select_date()` 메소드를 사용하여 날짜 선택기를 추가**하는 방법, 그리고 **`dol_fiche_head()` 함수를 사용하여 객체의 탭 메뉴를 표시**하는 방법 등도 미리 정의된 함수의 구체적인 사용 예시입니다. **돌리바 ERP CRM 모듈 개발의 더 큰 맥락에서 코딩 규칙 및 미리 정의된 함수의 중요성:** * **코드 품질 향상 및 유지 보수성 증대:** **일관된 코딩 규칙을 준수**함으로써 개발된 모듈의 코드는 **가독성이 높아지고 이해하기 쉬워집니다**. 이는 코드 유지 보수, 버그 수정 및 기능 확장을 용이하게 하여 모듈의 장기적인 생명력을 보장합니다. 여러 개발자가 협업하는 환경에서는 코딩 규칙 준수가 더욱 중요합니다. * **개발 효율성 증대:** 돌리바에서 제공하는 **미리 정의된 함수들을 활용**하면 개발자는 **반복적인 작업을 직접 코딩할 필요 없이** 이미 검증된 기능들을 쉽게 사용할 수 있습니다. 이는 개발 시간을 단축시키고 생산성을 향상시키는 데 크게 기여합니다. 예를 들어, 데이터베이스 접근, 폼 생성, 날짜 처리, 사용자 권한 확인 등 자주 사용되는 기능들을 미리 정의된 함수를 통해 간편하게 구현할 수 있습니다. * **돌리바 플랫폼과의 호환성 및 안정성 확보:** 미리 정의된 함수는 돌리바 코어 시스템과 긴밀하게 통합되어 있으므로, 이를 활용하여 개발된 모듈은 **돌리바 플랫폼과의 호환성 문제를 최소화**하고 **안정적인 작동**을 보장할 수 있습니다. 코어 업데이트 시에도 미리 정의된 함수를 사용하는 모듈은 호환성 문제를 겪을 가능성이 낮아집니다. * **보안성 강화:** 돌리바 코어 개발팀은 미리 정의된 함수들에 대한 보안 검토를 지속적으로 수행하므로, 개발자가 이러한 함수들을 안전하게 활용할 수 있도록 지원합니다. 직접 SQL 쿼리를 작성하거나 사용자 입력을 처리하는 대신 검증된 함수를 사용하는 것이 **보안 취약점을 줄이는 데 도움**이 됩니다. * **학습 곡선 완화:** 돌리바의 코딩 규칙과 주요 미리 정의된 함수들을 이해하는 것은 **새로운 개발자가 돌리바 모듈 개발에 빠르게 적응**하는 데 도움이 됩니다. 잘 정리된 개발자 문서는 이러한 학습 과정을 지원하는 중요한 자료입니다. **결론적으로, 돌리바 ERP CRM 모듈 개발에서 **코딩 규칙을 준수하는 것은 개발된 모듈의 품질과 유지 보수성을 확보하는 데 필수적**이며, **미리 정의된 함수를 적극적으로 활용하는 것은 개발 효율성을 높이고 플랫폼과의 호환성 및 안정성을 보장하는 데 매우 중요**합니다. 개발자는 돌리바 개발자 문서를 통해 제공되는 코딩 규칙과 미리 정의된 함수들을 숙지하고 이를 실제 모듈 개발 과정에 적용해야 합니다. 이는 결국 **더욱 강력하고 안정적이며 유지 보수가 용이한 돌리바 모듈을 개발**하는 데 기여하며, 돌리바 생태계 전체의 발전에 긍정적인 영향을 미칩니다.** =설치 및 배포= ==모듈 배포 및 설치 패키지 생성== ## 모듈 배포 및 설치 패키지 생성에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발의 최종 단계 중 하나인 **모듈 배포 및 설치를 위한 패키지 생성**에 대해 구체적으로 설명합니다. 이는 개발된 모듈을 다른 사용자와 공유하고, 돌리바 시스템에 쉽게 설치할 수 있도록 하는 중요한 과정입니다. **모듈 패키지 생성 방법:** * 출처의 "패키지를 생성하여 모듈 배포 및 설치하기" 섹션은 이 과정이 주로 **DoliStore.com 마켓플레이스에 제출**하기 위한 것이지만, **자체 네트워크를 통해 쉽게 배포할 수 있는 패키지를 만드는 데에도 사용될 수 있다**고 설명합니다. * 패키지 생성 단계는 다음과 같습니다: * **/build** 디렉토리로 이동하여 **makepack-dolibarrmodules.conf** 파일을 **makepack-mymodule.conf** 로 복사합니다. 안정 버전의 일부 패키지에는 이 디렉토리가 없을 수 있으며, 이 경우 돌리바 웹사이트의 "개발 버전" 스냅샷에서 `build` 디렉토리를 다운로드하여 사용할 수 있습니다. * 복사한 **makepack-mymodule.conf** 파일을 편집하여 개발한 모듈에 필요한 **모든 새로운 파일(모듈 설명자, 새로운 SQL 테이블 파일, PHP 페이지, 이미지 등)의 파일 이름을 목록에 추가**합니다. * **Perl 버전 5.0 이상**을 사용하여 스크립트를 실행합니다: `perl makepack-dolibarrmodule.pl`. * 스크립트는 모듈의 이름과 주요/부 버전 번호를 묻습니다. 이에 응답하면 모듈을 배포할 준비가 된 **mymodule.zip** 파일이 생성됩니다. * 생성된 모듈 패키지를 받는 사람은 돌리바 설치의 루트 디렉토리에 파일을 복사한 후 다음 명령을 실행하여 압축을 해제해야 합니다: `tar -xvf mymodule.zip`. * **공개적으로 모듈을 배포하려면** DoliStore.com 웹사이트에 zip 파일을 제출할 수 있습니다 (먼저 계정을 만들고 로그인해야 합니다). 제출된 모듈은 검증 과정을 거치며, 품질이 충분하고 라이선스가 허용되면 돌리바 메인 소스에 추가될 수도 있습니다 (개발자가 동의하지 않는 경우는 제외). ==DoiiStore 외부 모듈 활성화 조건== ## DoliStore 외부 모듈 활성화 조건에 대한 논의 및 돌리바 ERP CRM 모듈 개발의 더 큰 맥락 제공된 출처는 돌리바 ERP CRM 모듈 개발의 결과물인 외부 모듈을 **DoliStore에서 활성화하기 위한 조건**에 대해 간략하게 언급합니다. 출처의 마지막 섹션인 **"DoliStore 외부 모듈 활성화 조건"**은 [https://wiki.dolibarr.org/index.php?title=Modules_-_Packaging_rules_and_Dolistore_validation_rules "Validation Rules"]를 참조하도록 안내합니다.
요약:
LS Taiwan에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다(자세한 사항은
LS Taiwan:저작권
문서를 보세요).
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
검색
검색
Dolibarr 모듈 개발
편집하기
새 주제