diff --git a/docs/developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md b/docs/developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md deleted file mode 100644 index c062fcbdd7..0000000000 --- a/docs/developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Install Etendo Development Environment -tags: - - Getting Started - - Development Mode - - Develop - - Install Etendo ---- -# Install Etendo Development Environment - -## Overview - -This section explains how to install and run a new local Etendo environment. - - -## Install Etendo in local Environment - -To install Etendo in a development environment, follow the same steps as described in the [Etendo Installation Guide](../../../../getting-started/installation.md), the only difference is that we open the project with intelliJ and run Tomcat locally. - - -## Run Etendo Development Environment - -=== "IntelliJ IDEA Community Edition" - - 1. Download and install [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download){target="_blank"} - - 2. Open Etendo source directory with IntelliJ: - ![open-project.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/open-project.png) - - 2. Install Smart Tomcat plugin: - To install, go to `Settings` >> `Plugins` and search for `“Smart Tomcat”` - ![install-smart-tomcat.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/install-smart-tomcat.png) - - 3. Download [Apache Tomcat](https://tomcat.apache.org/download-90.cgi){target="_blank"} and unzip it in the project directory - - 4. Setting up Tomcat - - - Go to Current File >> Edit configurations. - ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/edit-configurations.png){ align=right } - - Add new Smart Tomcat Configuration, clicking "+" - - Name: Tomcat - - Tomcat Server: Select unziped Apache Tomcat directory - - Deployment directory: Select `WebContent` directory in the project - - Context path: define the same context path defined in gradle.properties file (by default "/etendo" ) - - Before launch: Remove all default tasks - - ![add-new-configuration.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-new-configuration.png) - - 5. Start the Tomcat - - ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/start-tomcat.png) - - !!! success - Now you have a new Etendo environment running in [http://localhost:8080/etendo](http://localhost:8080/etendo) - - !!! tip "Default credentials" - User: admin - Password: admin - - - -=== "IntelliJ IDEA Ultimate" - - 1. Download and install [IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download){target="_blank"} - - 2. Open Etendo source directory with IntelliJ: - - ![open-project-ultimate.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/open project-ultimate.png) - - 3. Seting up Tomcat - - - Go to Current File >> Edit configurations. - - ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/edit-configurations.png) - - - Select the Tomcat configuration that appears first in the list, check the Tomcat server configuration on your machine. - - ![add-new-configuration-ultimate.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-new-configuration-ultimate.png) - - In the Deployment section, add external sources - - ![add-new-configuration-ultimate.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-external-source.png) - - Selec the C `${env.CATALINA_HOME}/webapps/etendo` folder or the and then click the OK button. - - ![config-deployment-folder.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/config-deployment-folder.png) - - 4. Start the Tomcat - - ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/start-tomcat.png) - - !!! success - Now you have a new Etendo environment running in [http://localhost:8080/etendo](http://localhost:8080/etendo) - - !!! tip "Default credentials" - User: admin - Password: admin - - - -## Enable Etendo Logs (Optional) - -1. Open the file `config/log4j2-web.xml`, find the line `` and uncomment it: - - ``` XML title="config/log4j2-web.xml" - ... - - - - - << UNCOMMENT THIS LINE - - ... - ``` -2. Run smartbuild task - - ``` bash title="Terminal" - ./gradlew smartbuild --info - ``` - ---- -This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. diff --git a/docs/developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md b/docs/developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md deleted file mode 100644 index eae7b8165b..0000000000 --- a/docs/developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md +++ /dev/null @@ -1,364 +0,0 @@ ---- -title: Install Etendo Main UI -tags: - - Development - - Installation - - Main UI - - Docker - - Etendo - - New UI - - Install New UI -status: beta ---- - -# Install Etendo Main UI - -## Overview - -!!! example " **IMPORTANT: THIS IS A BETA VERSION**" - - It is under active development and may contain **unstable or incomplete features**. Use it **at your own risk**, especially in production environments. - - It should be used with **caution**, and you should always **validate backups** before executing any critical operation. - -This guide provides instructions to install and run the Etendo Main UI, a modern React/TypeScript-based user interface that provides a new frontend experience for Etendo. The Main UI runs as a containerized service alongside your Etendo instance. - -## Requirements - -1. **Etendo** project properly set up. -2. This project depends on the following tools: - - - [Docker](https://docs.docker.com/get-docker/){target="_blank"}: version `26.0.0` or higher - - [Docker Compose](https://docs.docker.com/compose/install/){target="_blank"}: version `2.26.0` or higher - - !!! warning - Avoid install Docker via [Snap](https://snapcraft.io){target="_blank"}, can be confined by this sandbox and may not have access to host directories such as `/opt/`, which can prevent Etendo Docker containers from starting correctly. - - Recommendation: install Etendo using the [latest ISO](../../../../whats-new/release-notes/etendo-classic/iso.md)(which includes Docker) or install Docker following the official installation guide from your distribution. - - !!! info - The [Docker Management](../../bundles/platform/docker-management.md) module, included as a dependency, allows for the distribution of the infrastructure within Etendo modules, which include Docker containers for each service. - - -3. ### Client Access Token - - :material-menu: `Application` > `General Setup` > `Client` > `Client` - - An encryption token is required for authentication. This token is necessary for **Etendo Main UI** to start a session. - - !!! note - Starting from **Etendo 26.1**, the SWS key is **automatically generated** during installation (`./gradlew install`). No manual action is required for new installations. - - To verify or manage the token: - - 1. Access Etendo Classic as a `System Administrator`. - 2. Navigate to `Client` > `Secure Web Service Configuration` tab. - 3. Verify that a key exists. If not, click the **Generate Key** button to create one. - 4. Check the **expiration time** (in minutes). If set to `0`, the token does not expire. If a custom expiration was configured, ensure the token has not expired. - - ![alt text](../../../../assets/developer-guide/etendo-mobile/getting-started/token.png) - - !!! warning "Security recommendation" - While `0` (no expiration) is the default, the Etendo team recommends setting a reasonable expiration time in production environments and rotating tokens periodically. - - !!! info - This token does not require any additional action; it just needs to exist for the authentication process to work properly. - - -## Installation - -Etendo Main UI is distributed within the [Platform Extensions](../../../../whats-new/release-notes/etendo-classic/bundles/platform-extensions/release-notes.md) bundle, which includes the **Main UI Infrastructure** and all required backend modules for the new interface. - -!!! info - To be able to include this functionality, the Platform Extensions Bundle must be installed. - To do that, follow the instructions from the marketplace: [Platform Extensions Bundle](https://marketplace.etendo.cloud/?#/product-details?module=5AE4A287F2584210876230321FBEE614){target="_blank"}. - For more information about the available versions, core compatibility and new features, visit [Platform Extensions - Release notes](../../bundles/platform/overview.md). - - - -## Running Etendo Main UI - -The simplest configuration example uses **Main UI running in Docker** and **Tomcat** running locally. -Other configurations are detailed in the section [Advanced Configurations](#advanced-configuration). - - - -### Interactive Setup (Recommended) - -1. You can configure Main UI interactively by running: - - ```bash - ./gradlew setup -Pinteractive=true --console=plain - ``` - - This will guide you through the configuration process for all required variables. For more information visit [Interactive Instalation](../../../../getting-started/interactive-installation.md) guide. - -2. Start the Docker services: - - ```bash title="Terminal" - ./gradlew resources.up - ``` - - This will start the **Main UI** container along with any other configured Docker services. - -### Manual Configuration - -1. Add the following lines to the `gradle.properties` file: - - ``` groovy title="gradle.properties" - docker_com.etendoerp.mainui=true - etendo.classic.url=http://host.docker.internal:8080/etendo - etendo.classic.host=http://localhost:8080/etendo - authentication.class=com.etendoerp.etendorx.auth.SWSAuthenticationManager - ws.maxInactiveInterval=3600 - next.public.app.url=http://localhost:3000 - ``` - - | Variable | Purpose (Simple Explanation) | Notes | Recommended Value (Local) | Recommended Value (Production) | - |---------|------------------------------|--------|-----------------------------|--------------------------------| - | **docker_com.etendoerp.mainui** | Enables the Main UI Docker service. | Default value may vary depending on the environment. | `true` | `true` | - | **etendo.classic.url** | Backend URL used by the Main UI server to connect to Etendo Classic. | If Main UI runs in Docker and Tomcat runs locally, `host.docker.internal` must be used. | `http://host.docker.internal:8080/etendo` | `https://your.backend.etendo.cloud/etendo` | - | **etendo.classic.host** | Client-side URL that the browser uses to make direct requests to Etendo Classic. | URL that the browser uses for direct requests. In Docker hybrid mode, use `localhost` | `http://localhost:8080/etendo` | `https://your-domain.com/etendo` | - | **authentication.class** | Java class that manages authentication between the Main UI and Etendo Classic. | Required for Secure Web Services authentication. | `com.etendoerp.etendorx.auth.SWSAuthenticationManager` | `com.etendoerp.etendorx.auth.SWSAuthenticationManager` | - | **ws.maxInactiveInterval** | Session duration (in seconds) for the Main UI WebSocket connection. | Does *not* affect the session timeout of Etendo Classic. Recommended value is 3600 seconds (1 hour). | `3600` | `3600` | - | **next.public.app.url** | Public URL where users access the Main UI application. | Must point to the reachable frontend URL; for local use, localhost is typical. | `http://localhost:3000` | `https://your.frontend.etendo.cloud` | - -3. Run the following commands to setup the module and update resources: - - ```bash title="Terminal" - ./gradlew setup - ``` - -4. Start the Docker services: - - ```bash title="Terminal" - ./gradlew resources.up - ``` - - This will start the **Main UI** container along with any other configured Docker services. - - -## Accessing the Main UI - -Once all services are running, the Main UI will be available at: - -[http://localhost:3000](http://localhost:3000) (default port) - -!!!info - The exact URL may vary depending on your Docker configuration. - - -## Advanced Configuration - -This section is for developers who want to contribute to or customize the **Main UI** codebase directly. - -### Requirements for Development - -1. **Node.js** version ^18.0.0 or higher -2. **pnpm** version ^9.15.2 (package manager) -3. All requirements from the basic installation above. - -### Manual Module Installation (Development Only) - -For development environments, you need to install the required modules manually: - -- `com.etendoerp.openapi` -- `com.etendoerp.etendorx` -- `com.etendoerp.metadata` -- `com.etendoerp.metadata.template` - -**Quick Clone Commands** - -```bash -cd modules - -# Clone required modules for development -git clone git@github.com:etendosoftware/com.etendoerp.etendorx.git -git clone git@github.com:etendosoftware/com.etendoerp.openapi.git -git clone git@github.com:etendosoftware/com.etendoerp.metadata.git -git clone git@github.com:etendosoftware/com.etendoerp.metadata.template.git -``` - -### Development Project Structure - -The workspace is organized as a unique environment with multiple packages: - -``` -com.etendorx.workspace-ui/ -├── packages/ -│ ├── api-client/ # API client for backend communication -│ ├── ComponentLibrary/ # Reusable UI components -│ └── MainUI/ # Main application -├── package.json -├── pnpm-workspace.yaml -└── README.md -``` - -### Development Installation Steps - -1. Clone the Main UI development repository: - - ```bash - git clone https://github.com/etendosoftware/com.etendorx.workspace-ui.git - cd com.etendorx.workspace-ui - ``` - -2. Install all project dependencies using `pnpm`: - - ```bash - pnpm install - ``` - - This command will install dependencies for all packages in the workspace. - -3. Create a `.env.local` file in the `packages/MainUI` directory: - - ```bash - cd packages/MainUI - touch .env.local - ``` - -4. Add your backend configuration: - - ```env - ETENDO_CLASSIC_URL=http://localhost:8080/etendo - ``` - !!!info - Replace the URLs with your actual Etendo backend URLs. - -5. Build the required packages in the correct order: - - ```bash - # Build API Client first (dependency for other packages) - pnpm --filter @workspaceui/api-client build - - # Build Component Library - pnpm --filter @workspaceui/componentlibrary build - ``` - -6. Launch the development server for the Main UI: - - ```bash - pnpm dev - ``` - - The application will be available at [http://localhost:3000](http://localhost:3000) by default. - -### Development Workflow - -**Root-Level Commands (Recommended)** - -The workspace provides convenient aliases at the root level for common tasks: - -```bash title="Aliases" -# Start Main UI development server -pnpm dev - -# Build all packages -pnpm build - -# Run tests across all packages -pnpm test - -# Lint all packages -pnpm lint - -# Fix lint issues automatically -pnpm lint:fix - -# Format code across all packages -pnpm format - -# Auto-fix formatting issues -pnpm format:fix - -# Clean all build artifacts -pnpm clean - -# Install dependencies -pnpm install -``` - -**Individual Package Commands** - -Each package can also be run independently using pnpm workspace commands: - -```bash title="Commands" -# Run MainUI development server -pnpm --filter @workspaceui/mainui dev - -# Build API Client -pnpm --filter @workspaceui/api-client build - -# Build Component Library -pnpm --filter @workspaceui/componentlibrary build - -# Run tests for API Client -pnpm --filter @workspaceui/api-client test - -# Lint specific package -pnpm --filter @workspaceui/mainui lint -``` - -**Linting and Formatting** - -The project uses Biome for linting and formatting across all packages: - -```bash -# Lint all packages -pnpm lint - -# Fix lint issues -pnpm lint:fix - -# Format code -pnpm format - -# Auto-fix formatting -pnpm format:fix -``` - -### Package Details - -**API Client (`@workspaceui/api-client`)** - -Contains TypeScript definitions and API functions for communicating with the Etendo backend. Provides: - -- Authentication APIs -- Metadata APIs -- Datasource APIs -- Copilot integration APIs - -**Component Library (`@workspaceui/componentlibrary`)** - -A collection of reusable React components built with Material-UI. Includes: - -- Form components (inputs, selectors, etc.) -- Navigation components -- Modal and dialog components -- Data display components - -**Main UI (`@workspaceui/mainui`)** - -The main Next.js application that provides the complete user interface. Features: - -- Modern React/TypeScript architecture -- Server-side rendering with Next.js -- Material-UI theme integration -- Responsive design - - -### Run Tests - -Execute the test suites to ensure everything works correctly - -```bash -# Run all tests -pnpm test - -# Build for production -pnpm build -``` - -The development environment is now ready for building and customizing the Etendo Main UI. - ---- -This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. \ No newline at end of file diff --git a/docs/developer-guide/etendo-classic/getting-started/installation/local-development.md b/docs/developer-guide/etendo-classic/getting-started/installation/local-development.md new file mode 100644 index 0000000000..c315c82458 --- /dev/null +++ b/docs/developer-guide/etendo-classic/getting-started/installation/local-development.md @@ -0,0 +1,210 @@ +--- +tags: + - Getting Started + - Development + - Installation + - Local Development + - IntelliJ +--- + +# Install Etendo - Local Development Environment + +## Overview + +This guide covers setting up a local Etendo development environment. It uses IntelliJ IDEA with a local Tomcat instance to run Etendo, and Docker to run Copilot and Main UI as containerized services. + +## Prerequisites + +Before starting, make sure the following are ready: + +- [System requirements](requirements.md) +- [PostgreSQL configured](postgresql-configuration.md) +- [GitHub credentials](use-of-repositories-in-etendo.md) +- [Docker](https://docs.docker.com/get-docker/){target="_blank"} version `26.0.0` or higher +- [Docker Compose](https://docs.docker.com/compose/install/){target="_blank"} version `2.26.0` or higher +- **OpenAI API Key** — required for Copilot. Use your own key from [OpenAI](https://platform.openai.com/account/api-keys){target="_blank"} or contact [Etendo](https://etendo.software){target="_blank"} to get one. For details on supported providers, see the [Copilot Installation guide](../../../etendo-copilot/installation.md#configuration-variables). + +!!! warning + Avoid installing Docker via [Snap](https://snapcraft.io){target="_blank"} — its sandbox restrictions may prevent Etendo Docker containers from accessing host directories correctly. Install Docker following the official guide for your distribution. + +## Installation + +### 1. Clone the Project + +```bash title="Terminal" +cd /path/to/workspace +git clone https://github.com/etendosoftware/etendo_base.git EtendoERP +cd EtendoERP +``` + +### 2. Add GitHub Credentials + +Edit `gradle.properties` and add your GitHub credentials. To generate them, follow the [Use of Repositories in Etendo](use-of-repositories-in-etendo.md) guide. + +```groovy title="gradle.properties" +githubUser= +githubToken=<*******> +``` + +### 3. Expand the Project + +=== ":octicons-file-zip-24: Source Format" + + Source format is recommended for local development as it gives full access to the codebase. + + ```bash title="Terminal" + ./gradlew expand + ``` + +=== ":material-language-java: JAR Format" + + Uncomment the core dependency in `build.gradle`: + + ```groovy title="build.gradle" + implementation('com.etendoerp.platform:etendo-core:') + ``` + + !!! info + To know the available versions, visit the [Etendo Release Notes](../../../../whats-new/release-notes/etendo-classic/release-notes.md). + +### 4. Apply the Local Template + +Run the following task to configure all required variables for Etendo, Copilot, and Main UI: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local +``` + +When prompted, enter your **OpenAI API Key**. + +The template configures `gradle.properties` automatically with all required settings for a local environment, including Copilot and Main UI Docker services. + +!!! info "Availability" + `setup.applyTemplates` is available from **Etendo 26** onwards, or in earlier versions with the [Etendo Gradle Plugin 3.0.0](../../../../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) or higher. + +!!! info + For details about available templates, options, and advanced usage, see the [How to Use Setup Apply Templates](../../how-to-guides/how-to-use-setup-apply-templates.md) guide. + +!!! tip "Alternative: Manual Configuration" + Configure variables directly in `gradle.properties` and apply them by running: + ```bash + ./gradlew setup --info + ``` + +!!! tip "Alternative: Interactive Setup" + For a fully guided, property-by-property configuration, run the interactive setup instead: + ```bash + ./gradlew setup -Pinteractive=true --console=plain + ``` + For more details, see the [How to Use the Interactive Setup](../../how-to-guides/how-to-use-interactive-setup.md) guide. + +### 5. Start Docker Services + +```bash title="Terminal" +./gradlew resources.up --info +``` +This starts the **Copilot** and **Main UI** containers. Both are included in the base installation. + +### 6. Install Etendo + +```bash title="Terminal" +./gradlew install smartbuild --info +``` + +This creates the database, compiles the sources, and deploys to the local Tomcat directory. + + +## Run in IntelliJ + +=== "IntelliJ IDEA Community Edition" + + 1. Download and install [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download){target="_blank"}. + + 2. Open the Etendo source directory with IntelliJ: + + ![open-project.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/open-project.png) + + 3. Install the **Smart Tomcat** plugin: go to `Settings` > `Plugins` and search for `Smart Tomcat`. + + ![install-smart-tomcat.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/install-smart-tomcat.png) + + 4. Download [Apache Tomcat](https://tomcat.apache.org/download-90.cgi){target="_blank"} and unzip it inside the project directory. + + 5. Set up the Tomcat run configuration: + + - Go to `Current File` > `Edit Configurations`. + + ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/edit-configurations.png) + + - Click `+` and add a new **Smart Tomcat** configuration with the following values: + - **Name**: `Tomcat` + - **Tomcat Server**: select the unzipped Apache Tomcat directory + - **Deployment directory**: select the `WebContent` directory in the project + - **Context path**: use the same value defined in `gradle.properties` (default: `/etendo`) + - **Before launch**: remove all default tasks + + ![add-new-configuration.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-new-configuration.png) + + 6. Start Tomcat from the run configuration: + + ![start-tomcat.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/start-tomcat.png) + +=== "IntelliJ IDEA Ultimate" + + 1. Download and install [IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download){target="_blank"}. + + 2. Open the Etendo source directory with IntelliJ. + + 3. Set up the Tomcat run configuration: + + - Go to `Current File` > `Edit Configurations`. + + ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/edit-configurations.png) + + - Select the Tomcat configuration from the list and verify the Tomcat server settings. + + ![add-new-configuration-ultimate.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-new-configuration-ultimate.png) + + - In the **Deployment** section, add external sources and select the `${env.CATALINA_HOME}/webapps/etendo` folder. + + ![add-external-source.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-external-source.png) + + ![config-deployment-folder.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/config-deployment-folder.png) + + 4. Start Tomcat from the run configuration. + +## Access the Installation + +Once Tomcat and Docker services are running: + +| Interface | URL | +|---|---| +| **Main UI** | [http://localhost:3000](http://localhost:3000){target="_blank"} | +| **Classic UI** | [http://localhost:8080/etendo](http://localhost:8080/etendo){target="_blank"} | + +!!! tip "Default credentials" + User: `admin` + Password: `admin` + +## Optional + +### Enable Etendo Logs + +1. Open `config/log4j2-web.xml` and uncomment the `Console` appender reference: + + ```xml title="config/log4j2-web.xml" + + + + + + ``` + +2. Run `smartbuild` to apply the change: + + ```bash title="Terminal" + ./gradlew smartbuild --info + ``` + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. \ No newline at end of file diff --git a/docs/developer-guide/etendo-classic/getting-started/installation/production-server.md b/docs/developer-guide/etendo-classic/getting-started/installation/production-server.md new file mode 100644 index 0000000000..02dd739005 --- /dev/null +++ b/docs/developer-guide/etendo-classic/getting-started/installation/production-server.md @@ -0,0 +1,150 @@ +--- +tags: + - Getting Started + - Installation + - Server + - Production + - ISO +--- + +# Install Etendo - Server Installation + +## Overview + +This guide covers installing Etendo on a production server using the **Etendo ISO**, which automates the operating system setup and base environment configuration. Copilot and Main UI are included in the base installation and are configured as part of this process. + +## Prerequisites + +- [GitHub credentials](use-of-repositories-in-etendo.md) +- **OpenAI API Key** — required for Copilot. Use your own key from [OpenAI](https://platform.openai.com/account/api-keys){target="_blank"} or contact [Etendo](https://etendo.software){target="_blank"} to get one. For details on supported providers, see the [Copilot Installation guide](../../../etendo-copilot/installation.md#configuration-variables). + +!!! info + The ISO configures the full stack (OS, PostgreSQL, Docker, Tomcat) automatically. No additional system setup is required. + +## Installation + +### 1. Download the ISO + +Download the latest Etendo ISO from the [Etendo ISO - Release Notes](../../../../whats-new/release-notes/etendo-classic/iso.md) page. + +### 2. Provision the Server + +How you use the ISO depends on your infrastructure: + +- **Bare metal / physical server**: burn the ISO to a USB drive using [balenaEtcher](https://etcher.balena.io/#download-etcher){target="_blank"} (Linux/macOS) or [Rufus](https://rufus.ie/en/){target="_blank"} (Windows), then boot from the USB. +- **AWS**: an official Etendo AMI is published alongside each ISO release. Find the AMI ID in the [Etendo ISO - Release Notes](../../../../whats-new/release-notes/etendo-classic/iso.md) page, then [launch a new EC2 instance from it](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html){target="_blank"}. +- **Hetzner Cloud**: upload the ISO as a custom image from the Hetzner Cloud Console and create a new server from it. Refer to the [Hetzner documentation](https://docs.hetzner.com){target="_blank"} for details. +- **Scaleway**: upload the ISO and use [custom boot modes](https://www.scaleway.com/en/docs/instances/how-to/use-boot-modes/){target="_blank"} to provision an instance from it. +- **Other cloud providers**: upload the ISO as a custom image and create a new instance from it. Refer to your provider's documentation for importing custom OS images. +- **Virtual machine**: mount the ISO directly in your hypervisor. [Qemu](https://www.qemu.org/download/){target="_blank"} with [Virt-Manager (Linux)](https://virt-manager.org/download.html){target="_blank"} or [UTM (macOS)](https://mac.getutm.app/){target="_blank"} are recommended options. + +### 3. Boot and Install the OS + +Start the system from the ISO. Follow the prompts: + +- **Network Connections**: verify an IP address is correctly assigned and internet access is available. +- **Storage Configuration**: select the target disk. +- **Profile Setup**: enter your name, server name, and a password for the `etendo` user. + +Wait for the operating system installation and server upgrade to complete. When prompted, select **Reboot Now**. + +After the restart, the final server configuration runs automatically. Wait for it to complete — the base environment will be ready. + +!!! info "Installing without internet connection" + If no internet connection is available during installation, select **Continue without internet** at the network configuration step. After the OS installation and reboot, configure the network, connect to the internet, log in as superuser (`sudo su`), and run `etendo-install`. + +### 4. Add GitHub Credentials + +Once the server is ready, navigate to the project directory and add your GitHub credentials to `gradle.properties`. To generate them, follow the [Use of Repositories in Etendo](use-of-repositories-in-etendo.md) guide. + +```bash title="Terminal" +cd /opt/EtendoERP +``` + +```groovy title="gradle.properties" +githubUser= +githubToken=<*******> +``` + +### 5. Apply the Server Template + +Run the following task to configure all required variables for the server environment: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=server +``` + +When prompted, provide: + +- **Etendo ERP URL** — the full URL of your installation (e.g., `http://myserver.com/etendo`). The context name and host are derived automatically. +- **OpenAI API Key** — your key for Copilot integration (input is masked). + +!!! info "Availability" + `setup.applyTemplates` is available from **Etendo 26** onwards, or in earlier versions with the [Etendo Gradle Plugin 3.0.0](../../../../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) or higher. + +!!! info + For details about available templates, options, and advanced usage, see the [How to Use Setup Apply Templates](../../how-to-guides/how-to-use-setup-apply-templates.md) guide. + +!!! tip "Alternative: Manual Configuration" + Configure variables directly in `gradle.properties` and apply them by running: + ```bash + ./gradlew setup --info + ``` + +!!! tip "Alternative: Interactive Setup" + For a fully guided, property-by-property configuration, run the interactive setup instead: + ```bash + ./gradlew setup -Pinteractive=true --console=plain + ``` + For more details, see the [How to Use the Interactive Setup](../../how-to-guides/how-to-use-interactive-setup.md) guide. + +### 6. Start Docker Services + +```bash title="Terminal" +./gradlew resources.up +``` + +This starts the **Copilot** and **Main UI** containers. + +### 7. Compile and Deploy + +```bash title="Terminal" +./gradlew install smartbuild --info +``` +This creates the database, compiles the sources, and deploys to the local Tomcat directory. + +### 8. Configure Apache + +From the `/opt/EtendoERP` directory, run the Apache configuration script: + +```bash title="Terminal" +cd utils +sudo ./apache-config.sh +``` + +This configures Apache as a reverse proxy for the server. Once complete, the Main UI and Classic UI URLs are set automatically based on the domain provided. + + +### 9. Start Tomcat + +```bash title="Terminal" +sudo /etc/init.d/tomcat start +``` + +## Access the Installation + +Once all services are running: + +| Interface | URL | +|---|---| +| **Main UI** | `https:///` | +| **Classic UI** | `https:///` | + +!!! tip "Default credentials" + User: `admin` + Password: `admin` + + Change the default password immediately after the first login in a production environment. + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. diff --git a/docs/developer-guide/etendo-classic/getting-started/installation/requirements.md b/docs/developer-guide/etendo-classic/getting-started/installation/requirements.md new file mode 100644 index 0000000000..da0230ec8d --- /dev/null +++ b/docs/developer-guide/etendo-classic/getting-started/installation/requirements.md @@ -0,0 +1,76 @@ +--- +title: Requirements + +tags: + - Etendo Requirements + - Web Browsers + - Network Connectivity + - Java Platform + - Software Stack + - Etendo Classic + - Requirements +--- +## Overview + +This section explains the stack of tools and requirements to install Etendo. + +## Client: web browsers + +| | | | | +| --- | --- | --- | --- | +| **Web browser** | | **Minimum required** | **Recommended version** | +| ![Chrome logo.png](../../../../assets/drive/mOCl2euDZU8wO2MedNIrplZBmdiqguZm86ab6e3RVnKM4B4uX3s0UMMf0FVPIYLYeHmFy8FHPMNsJ9nOX6rXZAo76IzmQSSPrrN2DgNiD3DrJIG2j25JRJvASy7yiBGzsJBRp2Cg.png) | **Google Chrome** | 95 | **97 or higher** | +| ![Safari icon large.png](../../../../assets/drive/JVloGgFusza-4BFZ30Gjra-m_4Aknv5c3Y5vJEoYZ4B4HiEV09e6bMcnSfyImo7D7TJbgPRsIIUScqqatrJBW8SoMV7HmSe3q12JLmaEp7AIYT2FSuLrjcz2mnT3fQ6NCMWg0zAu.png) | **Apple Safari** | 12 | **14 or higher** | +| ![Firefox logo 2017.png](../../../../assets/drive/p3EzTz7im_NXkvyXHa5aIk29Va-vEN-96NUPsPr1BLqnWL7AA6CuewRnASM9EfEyMxRmaGmq3pNHPbAqNy2ZJL6xAuEUtM5q10QXfcadnvVJwW7-ISmAZ9xNgbOSs3XwSDsppY1P.png) | **Mozilla Firefox ESR** | 78 | **90 or higher** | +| ![Microsoft Edge logo.png](../../../../assets/drive/acUA_bLGo6j1tRenMx_zSRQddDaf2N86N0iL2cT5o5Om5Gc96_YzQ0HOZ_CdZAitgs1m6M24Nbk5cbs1Et2I0MrUPB1a5sapBINQg_4Jzg8C_aoCmS3-CaKmn8BItB4O25SvFpy6.png) | **Microsoft Edge (Chromium based)** | 95 | **97 or higher** | + +## Client: network connectivity + +Here, there are example configurations, depending on the number of concurrent users to be supported. These assume the server is hosted with a fast connection, so it's network is not a limiting factor. + +| Downstream bandwidth | Concurrent users | +| --- | --- | +| 3Mbit/s | <=10 | +| 10MBit/s | <=20 | +| 100MBit/s | <=100 | + +## Server: Java based = multiplatform + +Etendo runs wherever the Java JDK works. This currently means: + +### Operating systems: +:material-microsoft-windows: Windows
+:simple-linux: Linux distribution
+:simple-freebsd: FreeBSD
+:simple-macos: Mac OSX
+Solaris and more.
+ +### Architectures: +x86, x86\_64, IA64, Sparc, PowerPC, AIX. +Either PostgreSQL should also be supported by your target system + +## Software Stack + +### Etendo 25 + +| Stack component | Supported versions | Recommended version | Installation Guide | +| :--- | :--- | :--- | :--- | +| :fontawesome-brands-java: Java SE | 17 | Latest 17.x | [Java Installation Guide](https://www.oracle.com/java/technologies/downloads/#java17){target="_blank"} | +| :simple-postgresql: PostgreSQL | 14.x, 16.x, Amazon RDS | Latest 16.x | [Postgres Installation Guide ](https://www.postgresql.org/download/){target="_blank"} | +| :simple-apachetomcat: Apache Tomcat | 9.0.x | Latest 9.0.x | [Tomcat Installation Guide](https://tomcat.apache.org/download-90.cgi){target="_blank"} | +| :simple-gradle: Gradle | 8.12.1 | 8.12.1 | [Gradle Docs](https://docs.gradle.org/8.12.1){target="_blank"} | +| :material-database: Oracle | 19c (LTS) | 19c (LTS) | + +### Etendo 24 and earlier + +| Stack component | Supported versions | Recommended version | Installation Guide | +| :--- | :--- | :--- | :--- | +| :fontawesome-brands-java: Java SE | 11 | Latest 11.x | [Java Installation Guide](https://www.java.com/en/download/manual.jsp){target="_blank"} | +| :simple-postgresql: PostgreSQL | 10.x, 11.x, 12.x, 13.x, Amazon RDS | Latest 14.x | [Postgres Installation Guide ](https://www.postgresql.org/download/){target="_blank"} | +| :simple-apachetomcat: Apache Tomcat | 8.5.x (x >= 24) | Latest 8.5.x | [Tomcat Installation Guide](https://tomcat.apache.org/download-80.cgi){target="_blank"} | +| :simple-gradle: Gradle | 7.3.2 | 7.3.2 | [Gradle Docs](https://docs.gradle.org/7.3.2){target="_blank"} | +| :material-database: Oracle | 19c (LTS) | 19c (LTS) | | + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. + diff --git a/docs/developer-guide/etendo-classic/getting-started/upgrade/upgrade-etendo-to-any-version.md b/docs/developer-guide/etendo-classic/getting-started/upgrade/upgrade-etendo-to-any-version.md index a4408541a2..9e3c6ef808 100644 --- a/docs/developer-guide/etendo-classic/getting-started/upgrade/upgrade-etendo-to-any-version.md +++ b/docs/developer-guide/etendo-classic/getting-started/upgrade/upgrade-etendo-to-any-version.md @@ -55,9 +55,9 @@ This guide explains how to upgrade your Etendo environment to any version you wa The required technology stack depends on the target version. -- For Etendo versions prior to **Etendo 25**, the initial stack remains unchanged, For more information, visit: [Etendo 24 and Earlier - Software Stack](../../../../getting-started/requirements.md#etendo-24-and-earlier) +- For Etendo versions prior to **Etendo 25**, the initial stack remains unchanged, For more information, visit: [Etendo 24 and Earlier - Software Stack](../installation/requirements.md#etendo-24-and-earlier) -- If you are migrating to **Etendo 25**, you must first update the **entire technology stack** (Java SE, PostgreSQL, Apache Tomcat). For more information, visit: [Etendo 25 - Software Stack](../../../../getting-started/requirements.md#etendo-25) +- If you are migrating to **Etendo 25**, you must first update the **entire technology stack** (Java SE, PostgreSQL, Apache Tomcat). For more information, visit: [Etendo 25 - Software Stack](../installation/requirements.md#etendo-25) !!!tip The [Developer Changelog](../../developer-changelog/apichanges.md) guide provides details about the required stack and possible changes needed in custom modules. diff --git a/docs/developer-guide/etendo-classic/how-to-guides/how-to-configure-etendo-main-ui.md b/docs/developer-guide/etendo-classic/how-to-guides/how-to-configure-etendo-main-ui.md new file mode 100644 index 0000000000..91ad558b33 --- /dev/null +++ b/docs/developer-guide/etendo-classic/how-to-guides/how-to-configure-etendo-main-ui.md @@ -0,0 +1,197 @@ +--- +tags: + - How to + - Etendo Classic + - Main UI + - Docker + - Configuration +--- + +# How to Configure Etendo Main UI + +## Overview + +Etendo Main UI is a modern React/TypeScript-based user interface included in the base Etendo installation. It runs as a containerized Docker service alongside the Etendo instance and is started automatically with `./gradlew resources.up`. + +This guide covers manual configuration of the Main UI variables and the advanced development setup for contributors. + +## Requirements + +- Etendo project properly set up. See the [Local Development](../getting-started/installation/local-development.md) or [Server Installation](../getting-started/installation/production-server.md) guides. +- [Docker](https://docs.docker.com/get-docker/){target="_blank"} version `26.0.0` or higher +- [Docker Compose](https://docs.docker.com/compose/install/){target="_blank"} version `2.26.0` or higher + +!!! warning + Avoid installing Docker via [Snap](https://snapcraft.io){target="_blank"} — its sandbox restrictions may prevent Etendo Docker containers from accessing host directories correctly. Install Docker following the official guide for your distribution. + +!!! info + The [Docker Management](../bundles/platform/docker-management.md) module, included as a dependency, manages the distribution of infrastructure within Etendo modules via Docker containers. + +## Client Access Token + +:material-menu: `Application` > `General Setup` > `Client` > `Client` + +A one-time encryption token must be configured for authentication. This token is required for the Main UI to start a session. + +1. Access Etendo Classic as a `System Administrator`. +2. Navigate to `Client` > `Secure Web Service Configuration` tab. +3. Click **Generate Key** to create a token. The expiration time is in minutes; set to `0` for no expiration. + +![Client Access Token](../../../assets/developer-guide/etendo-mobile/getting-started/token.png) + +!!! info + This token does not require any further action — it just needs to be generated for the authentication process to work correctly. + +## Configuration + +### Using the Interactive Setup + +Run the interactive configuration assistant to set all required variables: + +```bash title="Terminal" +./gradlew setup -Pinteractive=true --console=plain +``` + +For a full walkthrough, see the [How to Use the Interactive Setup](./how-to-use-interactive-setup.md) guide. + +Then start the Docker services: + +```bash title="Terminal" +./gradlew resources.up +``` + +### Manual Configuration + +Add the following variables to `gradle.properties`: + +```groovy title="gradle.properties" +docker_com.etendoerp.mainui=true +etendo.classic.url=http://host.docker.internal:8080/etendo +etendo.classic.host=http://localhost:8080/etendo +authentication.class=com.etendoerp.etendorx.auth.SWSAuthenticationManager +ws.maxInactiveInterval=3600 +next.public.app.url=http://localhost:3000 +``` + +| Variable | Description | Local | Production | +|---|---|---|---| +| `docker_com.etendoerp.mainui` | Enables the Main UI Docker service. | `true` | `true` | +| `etendo.classic.url` | Backend URL used by the Main UI server to connect to Etendo Classic. Use `host.docker.internal` when Main UI runs in Docker and Tomcat runs locally. | `http://host.docker.internal:8080/etendo` | `https://your.backend.etendo.cloud/etendo` | +| `etendo.classic.host` | Client-side URL the browser uses to make direct requests to Etendo Classic. | `http://localhost:8080/etendo` | `https://your-domain.com/etendo` | +| `authentication.class` | Java class that manages authentication between Main UI and Etendo Classic. | `com.etendoerp.etendorx.auth.SWSAuthenticationManager` | `com.etendoerp.etendorx.auth.SWSAuthenticationManager` | +| `ws.maxInactiveInterval` | Session duration in seconds for the Main UI WebSocket connection. Does not affect Etendo Classic session timeout. | `3600` | `3600` | +| `next.public.app.url` | Public URL where users access the Main UI. | `http://localhost:3000` | `https://your.frontend.etendo.cloud` | + +Apply the configuration and start services: + +```bash title="Terminal" +./gradlew setup +./gradlew resources.up +``` + +## Access the Main UI + +Once all services are running, the Main UI is available at: + +| Environment | URL | +|---|---| +| **Local** | [http://localhost:3000](http://localhost:3000){target="_blank"} | +| **Production** | `https:///` | + +## Advanced Configuration + +This section is for developers who want to contribute to or customize the Main UI codebase directly. + +### Additional Requirements + +- **Node.js** version `^18.0.0` or higher +- **pnpm** version `^9.15.2` + +### Required Modules + +Install the following modules in the `modules/` directory: + +```bash title="Terminal" +cd modules +git clone git@github.com:etendosoftware/com.etendoerp.etendorx.git +git clone git@github.com:etendosoftware/com.etendoerp.openapi.git +git clone git@github.com:etendosoftware/com.etendoerp.metadata.git +git clone git@github.com:etendosoftware/com.etendoerp.metadata.template.git +``` + +### Project Structure + +``` +com.etendorx.workspace-ui/ +├── packages/ +│ ├── api-client/ # API client for backend communication +│ ├── ComponentLibrary/ # Reusable UI components +│ └── MainUI/ # Main application +├── package.json +├── pnpm-workspace.yaml +└── README.md +``` + +### Development Setup + +1. Clone the Main UI development repository: + + ```bash title="Terminal" + git clone https://github.com/etendosoftware/com.etendorx.workspace-ui.git + cd com.etendorx.workspace-ui + ``` + +2. Install dependencies: + + ```bash title="Terminal" + pnpm install + ``` + +3. Create `packages/MainUI/.env.local` and add the backend URL: + + ```env title=".env.local" + ETENDO_CLASSIC_URL=http://localhost:8080/etendo + ``` + +4. Build required packages in order: + + ```bash title="Terminal" + pnpm --filter @workspaceui/api-client build + pnpm --filter @workspaceui/componentlibrary build + ``` + +5. Start the development server: + + ```bash title="Terminal" + pnpm dev + ``` + + The application is available at [http://localhost:3000](http://localhost:3000){target="_blank"}. + +### Development Commands + +**Root-level commands:** + +```bash title="Terminal" +pnpm dev # Start Main UI development server +pnpm build # Build all packages +pnpm test # Run tests across all packages +pnpm lint # Lint all packages +pnpm lint:fix # Fix lint issues automatically +pnpm format # Format code across all packages +pnpm format:fix # Auto-fix formatting issues +pnpm clean # Clean all build artifacts +``` + +**Per-package commands:** + +```bash title="Terminal" +pnpm --filter @workspaceui/mainui dev +pnpm --filter @workspaceui/api-client build +pnpm --filter @workspaceui/componentlibrary build +pnpm --filter @workspaceui/api-client test +pnpm --filter @workspaceui/mainui lint +``` + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. diff --git a/docs/developer-guide/etendo-classic/how-to-guides/how-to-use-interactive-setup.md b/docs/developer-guide/etendo-classic/how-to-guides/how-to-use-interactive-setup.md new file mode 100644 index 0000000000..84e5b73318 --- /dev/null +++ b/docs/developer-guide/etendo-classic/how-to-guides/how-to-use-interactive-setup.md @@ -0,0 +1,146 @@ +--- +tags: + - How to + - Etendo Classic + - Interactive Setup + - Configuration +--- + +# How to Use the Interactive Setup + +## Overview + +The Interactive Setup is an alternative to `setup.applyTemplates` that guides the developer through each configuration property individually, with inline help, validation, and a confirmation step before applying any changes. + +Key features: + +- Step-by-step guidance with inline help for every property. +- Sensitive input (passwords, tokens) is detected and hidden. +- Settings are grouped by category (Database, Security, Application, etc.). +- Built-in validation and a confirmation step before applying changes. +- Automatic backups of existing configuration files before updates. + +!!! info + For a faster setup using predefined templates, see the [Local Development](../getting-started/installation/local-development.md) or [Server Installation](../getting-started/installation/production-server.md) guides, which use `setup.applyTemplates` as the primary method. + +## Requirements + +- [System requirements](../getting-started/installation/requirements.md) +- [PostgreSQL configured](../getting-started/installation/postgresql-configuration.md) +- [GitHub credentials](../getting-started/installation/use-of-repositories-in-etendo.md) +- Etendo Gradle Plugin [2.1.0](../../../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) or higher. For more information, visit [Etendo Gradle Plugin](../developer-tools/etendo-gradle-plugin.md). + +## Start Interactive Configuration + +Launch the interactive configuration assistant: + +```bash title="Terminal" +./gradlew setup -Pinteractive=true --console=plain +``` + +## Navigate the Configuration Menu + +The main configuration menu is displayed: + +``` +🎛️ Interactive Setup - Main Menu +============================================================ + +📋 Choose configuration option: + +1️⃣ Default configuration (use current/default values) +2️⃣ Group configuration: + 📦 a. all - Configure all groups + 📋 b. Database Configuration + 📋 c. Security Settings + 📋 d. Application Settings +3️⃣ Exit without saving + +🎯 Select an option: +``` + +## Configure Properties + +When selecting a configuration group, each property is presented individually: + +``` +📋 Database Configuration +================================================== + +🔧 Property: bbdd.host + ℹ️ Database server hostname or IP address + Current value: localhost +✏️ New value: [Enter to keep current, or type new value] + +🔧 Property: bbdd.port + ℹ️ Database server port number + Current value: 5432 +✏️ New value: [Enter to keep current, or type new value] + +🔧 Property: bbdd.password + ℹ️ Database connection password + Current value: +🔐 New value (hidden): [Password input is hidden] +``` + +!!! tip "Property Configuration Tips" + - **Press Enter** to keep the current/default value. + - **Type new values** to override defaults. + - **Sensitive properties** (passwords, tokens) will hide your input. + - **Required properties** must have a value to proceed. + +## Review Configuration Summary + +Before applying changes, a complete summary is shown: + +``` +📊 Configuration Summary +============================================================ + +📋 Database Configuration: + 🔧 bbdd.host = localhost + 🔧 bbdd.port = 5432 + 🔧 bbdd.password = ******** + +📋 Security Settings: + 🔧 githubToken = ******** + 🔧 nexusPassword = ******** + +📋 Application Settings: + 🔧 context.name = etendo + +📊 Total: 6 properties configured +🔐 Including 3 sensitive properties (shown masked) + +✅ Confirm configuration? (Y/N): +``` + +After confirming, properties are saved to `gradle.properties` (with automatic backup) and `./gradlew setup` runs automatically. + +## Re-running Interactive Configuration + +The interactive configuration can be run again at any time to modify settings or review the current values: + +```bash title="Terminal" +./gradlew setup -Pinteractive=true --console=plain +``` + +This shows the current configuration values, allows modifying any setting, and creates a new backup before applying changes. + +## Debug Mode + +For troubleshooting, enable debug output: + +```bash title="Terminal" +./gradlew setup -Pinteractive=true --debug --console=plain +``` + +## Custom Modules Properties + +If the project includes custom modules with a `config.gradle` file, their configuration properties are added automatically to the interactive setup. Property names are preserved exactly as declared in `config.gradle`, and custom keys in `gradle.properties` are supported. + +!!! info + For details about Interactive Configuration for custom modules, visit the [Etendo Interactive Configuration](../developer-tools/etendo-interactive-configuration.md) guide. + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. diff --git a/docs/developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md b/docs/developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md new file mode 100644 index 0000000000..8f76e4ee0f --- /dev/null +++ b/docs/developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md @@ -0,0 +1,355 @@ +--- +title: How to Use Setup Apply Templates +tags: + - How to + - Gradle + - Setup + - Configuration + - Templates +--- + +# How to Use Setup Apply Templates + +## Overview + +The `setup.applyTemplates` Gradle task allows you to quickly configure an Etendo project using predefined or custom templates. Templates are files that contain properties, dependencies, and modules that are applied automatically to your project, streamlining both initial setup and environment-specific configurations. + +The plugin ships with two built-in templates: **local** (for local development) and **server** (for server/production deployments with interactive configuration). The system is extensible — any `.template` file added to the plugin resources is automatically discovered and made available. + +This guide explains how to use the task, the available templates, the template format, placeholder support, and how to create custom templates. + +## Prerequisites + +- An Etendo project with the Gradle plugin installed. +- The project should not have a database already configured. If it does, use the `--force` flag to override this check. + +## Usage + +The task can be executed in four different modes: interactive selection, bundled template, local file, or remote URL. + +### Interactive Mode + +When no options are provided, the task presents an interactive menu to select from the available bundled templates: + +```bash title="Terminal" +./gradlew setup.applyTemplates +``` + +Output: + +```text +====================================================== + SELECT A TEMPLATE +====================================================== + 1) local + 2) server + + You can also use: + --template= (by name) + --file= (local file) + --url= (remote URL) + + >> Enter your selection (1-2): +``` + +### Apply a Bundled Template + +Use the `--template` option to apply one of the templates included with the plugin: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local +``` + +### Apply a Template from a Local File + +Use the `--file` option to apply a template stored on your local filesystem: + +```bash title="Terminal" +./gradlew setup.applyTemplates --file=/path/to/custom.template +``` + +### Apply a Template from a Remote URL + +Use the `--url` option to download and apply a template from a remote location: + +```bash title="Terminal" +./gradlew setup.applyTemplates --url=https://example.com/templates/my-setup.template +``` + +### Force Mode + +By default, the task checks whether a database already exists for the project. If it does, the task aborts to prevent unintended modifications. To skip this check, use the `--force` flag: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local --force +``` + +!!!warning + Using `--force` skips the environment validation. Make sure you understand the implications before applying a template to an already-configured project. + +## Available Options + +| Option | Description | Example | +|---|---|---| +| `--template` | Name of a bundled template from plugin resources | `--template=local` | +| `--file` | Path to a local `.template` file | `--file=/path/to/custom.template` | +| `--url` | URL to a remote `.template` file | `--url=https://example.com/my.template` | +| `--force` | Skip the database existence check | `--force` | + +## Bundled Templates + +### `local` — Local Development + +Designed for local development environments. Most values are preconfigured with sensible defaults. The only value that requires user input is the **OpenAI API Key**. + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local +``` + +#### Interactive Configuration + +When applied, the task prompts for the following value: + +| # | Prompt | Description | +|---|---|---| +| 1 | OpenAI API Key | Your OpenAI API key for Copilot integration. Input is masked for security. | + +### `server` — Server / Production Deployment + +Designed for server and production environments. This template uses **placeholders** that are resolved interactively during execution — the user is prompted to provide environment-specific values. + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=server +``` + +#### Interactive Configuration + +When applied, the task prompts for the following values: + +| # | Prompt | Variable | Description | +|---|---|---|---| +| 1 | Etendo ERP URL | `context.url` | The full web address of your Etendo ERP application (e.g., `http://myserver.com/etendo`). From this value, `context.name` (last path segment) and `context.host` (base URL without the context name) are derived automatically. | +| 2 | OpenAI API Key | `openai.api.key` | Your OpenAI API key for Copilot integration. Input is masked for security. | + +**Example interaction:** + +```text +====================================================== + CONFIGURATION REQUIRED + Template 'server' needs the following input + Please type each value and press ENTER +====================================================== + + + [1/2] Etendo ERP URL (e.g., http://clienthost/mycompanyname) + + >> http://myserver.com/etendo + + + [2/2] OpenAI API Key + + >> **** +``` + +#### Derived Values + +From the `context.url` input, the following values are automatically derived: + +| Input | Derived Variable | Value | +|---|---|---| +| `http://myserver.com/etendo` | `context.name` | `etendo` | +| | `context.host` | `http://myserver.com/` | + +These derived values are used to configure: + +- `etendo.classic.url` → `http://host.docker.internal:80/{context.name}` +- `etendo.classic.host` → `{context.url}` +- `next.public.app.url` → `{context.host}` + +## Advanced Features + +### Template Format + +Templates use an INI-like format with three sections: `[properties]`, `[dependencies]`, and `[modules]`. + +Within the `[properties]` section, comments (lines starting with `#` or `##`) are preserved and used as **section separators** in `gradle.properties`. This helps organize the generated configuration into logical groups. + +```properties title="example.template" +[properties] +## Main-UI +key1=value1 +key2=value2 + +#COPILOT +key3=value3 + +[dependencies] +implementation 'com.example:library:1.0.0' + +[modules] +com.etendoerp:mymodule:1.0.0 +``` + +#### Placeholder Support + +Templates can use **placeholders** in the format `{placeholder.name}` within property values. When the task detects placeholders, it automatically prompts the user for values and substitutes them before applying the template. + +```properties title="server.template (excerpt)" +[properties] +etendo.classic.host={context.url} +next.public.app.url={context.host} +OPENAI_API_KEY={openai.api.key} +``` + +Placeholder names can contain letters, numbers, dots, and underscores (e.g., `{context.url}`, `{openai.api.key}`). + +#### Section Details + +##### `[properties]` + +Properties are applied to the `gradle.properties` file. Each line must follow the `key=value` format. + +- If a property already exists, its value is updated. +- If a property does not exist, it is appended. +- Comment lines (`#` or `##`) within this section are written as section separators in the output file. +- Sensitive values (keys containing `KEY`, `TOKEN`, `PASSWORD`, or `SECRET`) are masked in console output for security. + +##### `[dependencies]` + +Dependencies are added to the `dependencies {}` block in `build.gradle`. + +- Supports any valid Gradle dependency configuration (`implementation`, `runtimeOnly`, `testImplementation`, etc.). +- If a dependency already exists, it is skipped. +- New dependencies are grouped under a `// Template Dependencies` comment. + +##### `[modules]` + +Modules can be specified in two formats: + +| Type | Format | Example | +|---|---|---| +| Artifact | `group:artifact:version` | `com.etendoerp:copilot-extras:1.0.0` | +| Git repository | `git::::branch=` | `git::https://github.com/etendosoftware/com.etendoerp.task.git::branch=main` | + +- **Artifact modules** are added to the `artifacts.list.COMPILATION.gradle` file. If already present, they are skipped. +- **Git modules** are cloned into the `modules/` directory. If the target directory already exists, the clone is skipped. If no branch is specified, the task tries `main`, then `master`, then the repository default. + +### Backup Mechanism + +Before applying any changes, the task automatically creates backups of the files that will be modified: + +- `gradle.properties` is backed up to `.template-backups/gradle.properties.` +- `build.gradle` is backed up to `.template-backups/build.gradle.` + +The timestamp format is `yyyyMMdd_HHmmss`. These backups allow you to restore previous configurations if needed. + +### Creating Custom Templates + +The template system is **extensible**: any `.template` file added to the plugin's `src/main/resources/templates/` directory is automatically discovered and listed in the interactive menu. No code changes are required. + +To create a custom template: + +1. Create a new file with the `.template` extension. +2. Add the desired sections (`[properties]`, `[dependencies]`, `[modules]`) with the appropriate content. +3. Use `{placeholder.name}` syntax for values that should be provided interactively. +4. Apply it using the `--file` or `--url` option, or add it to the resources directory for automatic discovery. + +#### Example: Custom Template with Placeholders + +```properties title="staging.template" +[properties] +## Database +bbdd.driver=org.postgresql.Driver +bbdd.url=jdbc:postgresql://{db.host}:5432/{db.name} +context.name={app.context} + +## Environment +environment=staging +log.level=INFO + +[dependencies] +implementation 'com.etendoerp:copilot:1.0.0' + +[modules] +com.etendoerp:mymodule:1.0.0 +``` + +Apply it: + +```bash title="Terminal" +./gradlew setup.applyTemplates --file=./staging.template +``` + +!!!info + Custom templates loaded via `--file` or `--url` that contain placeholders will also trigger interactive prompting. However, only placeholders that match the built-in prompt definitions will display descriptive messages — other placeholders will use a generic prompt. + +### CI/CD Integration + +The `setup.applyTemplates` task can be used in CI/CD pipelines. Since interactive prompts require user input, use the `local` template or a custom template without placeholders in automated contexts. + +#### Example: GitHub Actions + +```yaml title=".github/workflows/setup.yml" +- name: Apply Etendo template + run: ./gradlew setup.applyTemplates --template=local --force +``` + +#### Example: Remote Template in CI + +```bash title="Terminal" +./gradlew setup.applyTemplates --url=$TEMPLATE_URL --force +``` + +!!!info + Always use the `--force` flag in CI/CD environments where the database state may vary between runs. Avoid using the `server` template in CI/CD as it requires interactive input. + +### Execution Flow + +When the task runs, it follows this sequence: + +1. **Environment validation** — Checks if a database already exists (unless `--force` is set). +2. **Template resolution** — Loads the template from the specified source (resources, file, URL, or interactive selection). +3. **Placeholder resolution** — If the template contains placeholders, prompts the user for values and substitutes them. +4. **Backup creation** — Creates timestamped backups of `gradle.properties` and `build.gradle`. +5. **Template application** — Applies properties (with section separators), dependencies, and modules from the template. +6. **Setup execution** — Runs `./gradlew setup` automatically to apply the configuration changes. + +#### Example Output + +```text +Applying template: local + [properties] -> gradle.properties + docker_com.etendoerp.mainui=true + etendo.classic.url=http://host.docker.internal:8080/etendo + etendo.classic.host=https://localhost:8080/etendo + next.public.app.url=https://localhost:3000/ + authentication.class=com.etendoerp.etendorx.auth.SWSAuthenticationManager + ws.maxInactiveInterval=3600 + docker_com.etendoerp.copilot=true + COPILOT_HOST=localhost + COPILOT_PORT=5005 + OPENAI_API_KEY=**** + ETENDO_HOST=http://localhost:8080/etendo + ETENDO_HOST_DOCKER=http://host.docker.internal:8080/etendo + +Template 'local' applied successfully +``` + +!!!note + Sensitive values (API keys, tokens, passwords) are automatically masked in the console output. + +## Troubleshooting + +| Issue | Cause | Solution | +|---|---|---| +| `Template '' not found in resources` | The specified bundled template does not exist | Run the task without options to see available templates, or use `--file`/`--url` instead | +| `Template file not found: ` | The local file path is incorrect or the file does not exist | Verify the file path and ensure the file exists | +| `Failed to load template from URL` | The URL is unreachable or returned an error | Check the URL, network connectivity, and ensure the remote server is accessible | +| `Database already exists` | The project already has a configured database | Use the `--force` flag to skip this check, or remove the existing database first | +| `Value for '' cannot be empty` | An empty value was provided during interactive prompting | Provide a non-empty value for all prompted fields | +| `Could not find dependencies block in build.gradle` | The `build.gradle` file does not contain a `dependencies {}` block | Ensure `build.gradle` has a valid `dependencies { }` block before running the task | +| `Invalid git module format` | The git module line does not follow the expected format | Use the format `git::::branch=` | + +--- + +- This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L.](https://etendo.software){target="_blank"}. diff --git a/docs/es/developer-guide/etendo-classic/bundles/sales-extensions/crm-lead-management.md b/docs/es/developer-guide/etendo-classic/bundles/sales-extensions/crm-lead-management.md index 92a927af3c..d07b2686e4 100644 --- a/docs/es/developer-guide/etendo-classic/bundles/sales-extensions/crm-lead-management.md +++ b/docs/es/developer-guide/etendo-classic/bundles/sales-extensions/crm-lead-management.md @@ -23,7 +23,7 @@ Esta página explica cómo exportar los datos maestros de CRM (estados y orígen --- ## Lead Status -:material-menu: `Aplicación` > `CRM` > `Lead Status` +:material-menu: `Aplicación` > `Conector CRM` > `Lead Status` En esta ventana se gestionan los estados de oportunidad que definen el ciclo de vida del pipeline comercial. El módulo crea los siguientes estados predeterminados: @@ -53,7 +53,7 @@ Los desarrolladores con rol `System Administrator` pueden añadir estados person --- ## Lead Source -:material-menu: `Aplicación` > `CRM` > `Lead Source` +:material-menu: `Aplicación` > `Conector CRM` > `Lead Source` En esta ventana se definen los canales de origen a través de los cuales se capturan las oportunidades (por ejemplo, Web, Referral, Cold Call, Event, Social Media). diff --git a/docs/es/developer-guide/etendo-classic/concepts/alerts.md b/docs/es/developer-guide/etendo-classic/concepts/alerts.md index f907eeffc9..4b63a8301e 100644 --- a/docs/es/developer-guide/etendo-classic/concepts/alerts.md +++ b/docs/es/developer-guide/etendo-classic/concepts/alerts.md @@ -133,5 +133,3 @@ Este trabajo es una obra derivada de [Alertas](https://wiki.openbravo.com/wiki/A --- --- - ---- \ No newline at end of file diff --git a/docs/es/developer-guide/etendo-classic/concepts/data-access-layer.md b/docs/es/developer-guide/etendo-classic/concepts/data-access-layer.md index 4732c5beb0..8e65c9ae0f 100644 --- a/docs/es/developer-guide/etendo-classic/concepts/data-access-layer.md +++ b/docs/es/developer-guide/etendo-classic/concepts/data-access-layer.md @@ -742,4 +742,92 @@ Para aquellas consultas que quieran utilizar el pool de solo lectura, el proveed ``` java  ConnectionProvider cp = DalConnectionProvider.getReadOnlyConnectionProvider(); ``` -## Uso de la Data Access Layer en una tarea Ant \ No newline at end of file + +## Uso de la Data Access Layer en una tarea Ant + +Para facilitar el uso de la DAL en Ant, la DAL ofrece una clase base de tarea Ant: la DalInitializingTask en el paquete _org.openbravo.dal.core_. Esta clase se encarga de inicializar la capa DAL y otros detalles (p. ej., usar el classloader correcto). + +Para utilizar esta clase, es necesario realizar los siguientes cambios en la tarea Ant y en la implementación personalizada de la tarea Ant en Java: + +- La clase Java de la tarea Ant personalizada debe heredar de _DalInitializatingTask_. +- La clase Java de la tarea Ant personalizada debe implementar un método _doExecute_ en lugar del método execute en la clase Ant Java personalizada (es suficiente con renombrar el método execute a _doExecute_). +- Se requieren dos propiedades adicionales en la definición de la tarea ant (en el build.xml): + + - propertiesFile= `${base.config}/Openbravo.properties`. + - userId="100". + +La primera propiedad configura la ubicación donde se puede encontrar el archivo _Openbravo.properties_. La segunda propiedad establece el usuario bajo el cual se ejecuta la tarea. +## Información importante + +### Proxies de Hibernate + +Para mejorar el rendimiento de las asociaciones de un solo extremo, la DAL hace uso de la funcionalidad de proxies de Hibernate. La funcionalidad de proxies de Hibernate envuelve un objeto dentro de un objeto proxy de Hibernate. Esto se realiza en tiempo de ejecución usando cglib. El objeto proxy de Hibernate se encarga de cargar el objeto de negocio cuando realmente se accede a él. La ventaja de este enfoque es que, si nunca se accede a un objeto, entonces no se carga, ahorrando rendimiento. + +Sin embargo, el proxy de Hibernate es muy visible cuando un desarrollador depura una aplicación, porque la instancia de un objeto en tiempo de ejecución no será la clase exacta (por ejemplo, BPGroup), sino una instancia de una clase proxy de Hibernate. + +Para entender cuál es la consecuencia de usar proxies de Hibernate, es esencial que un desarrollador que use la DAL lea [esta parte](https://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/performance.html#performance-fetching-proxies){target="\_blank"} del manual de Hibernate. + +### Rendimiento: obtener el ID de un BaseOBObject + +La sección anterior trató el concepto de proxy de Hibernate. Un proxy de Hibernate cargará su objeto de negocio envuelto cuando se llame a uno de los métodos del objeto de negocio. En muchos casos, un desarrollador solo quiere acceder al ID o al nombre de entidad de un objeto. Para evitar la carga del objeto de negocio al recuperar únicamente esta información, la clase DalUtil en _org.openbravo.dal.core_ ofrece un método _getId_ y un método _getEntityName_. Estos métodos trabajan directamente con el objeto HibernateProxy y no cargan el objeto de negocio subyacente. + +### Funcionamiento interno de Hibernate + +Para entender cómo opera Hibernate internamente, se recomienda encarecidamente leer el capítulo 21 del manual de Hibernate: [Mejorar el rendimiento](https://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/performance.html){target="\_blank"}. + +### Carga de clases + +La DAL carga clases al inicializar la DAL. La DAL, de forma predeterminada, utiliza el cargador de clases de contexto del hilo. En algunos casos, esto no funciona correctamente (por ejemplo, cuando se usa la DAL en Ant). La DAL utiliza la clase OBClassLoader para hacer que el cargador de clases sea configurable. Llamando a _OBClassLoader.setInstance_ con su propio OBClassLoader, puede controlar el cargador de clases utilizado por la DAL. + +### Crear un nuevo objeto de negocio con un ID específico + +Hibernate detectará que un objeto de negocio es nuevo cuando: + +- el ID del objeto de negocio no está establecido +- cuando el indicador newOBObject se establece explícitamente en true + +Por lo tanto, si quiere crear un nuevo objeto de negocio con un ID específico (llamando a _setId(...)_), entonces necesita llamar explícitamente a _businessObject.setNewOBObject(true)_. De lo contrario, Hibernate no detectará el objeto de negocio como nuevo y lanzará una excepción ('count of batch update operation....'). +## Prácticas de codificación al usar/ampliar la DAL + +Esta sección analiza una serie de prácticas de codificación esenciales que deben seguirse al usar o ampliar la DAL. + +### Estructura de excepciones + +Todas las excepciones lanzadas por la DAL extienden la clase base OBException. La OBException es una _RuntimeException_, por lo que no se requieren sentencias explícitas de `catch` y `throw`. + +La clase OBException se encarga de registrar la excepción de la forma correcta. + +Al crear su propia clase de excepción, es recomendable extender OBException para poder hacer uso de las capacidades estándar de registro en OBException (las capacidades de registro se ampliarán con el tiempo). + +### Invariantes en tiempo de ejecución: la clase Check + +La Data Access Layer, en varias ubicaciones, realiza aserciones o comprobaciones de invariantes en tiempo de ejecución. Por ejemplo, para comprobar si los argumentos no son nulos o si se cumple una determinada condición. Implementar este tipo de comprobaciones ayuda a que su sistema sea mucho más robusto. Para que la implementación de este tipo de comprobaciones sea más conveniente, la Data Access Layer utiliza la clase Check, que se encuentra en el paquete _org.openbravo.base.util_. La clase Check ofrece métodos para comprobar _instanceof_, _isNull_, _isNotNull_, etc. + +El uso de una clase común para aserciones en todo su código hace que su código sea más legible y más fácil de entender (en comparación con implementar su propia comprobación de aserciones). + +### Formato de código + +El código fuente, que forma parte de la Data Access Layer, está formateado utilizando una plantilla de formato. Es esencial que, al desarrollar código en la Data Access Layer o al utilizarla, se use esta misma plantilla de formato de código. + +Un formato de código común tiene los siguientes beneficios: + +- Todo el código de Etendo Classic obtiene un aspecto uniforme, se ve más limpio/ordenado y, por lo tanto, es más profesional. +- El código será más fácil de entender y se cometerán menos errores. +- Es posible hacer diff de diferentes versiones del código en mercurial (a través de su IDE), y es más fácil entender los cambios a lo largo del tiempo. +- Resolver conflictos de mercurial es más sencillo. + +La plantilla de formato de código y su configuración se pueden encontrar en el siguiente artículo: [Formato de código de IntelliJ](../../etendo-classic/getting-started/installation/intellij-code-formatting.md). +## Consejos y trucos y solución de problemas + +!!!info + Para consultar consejos y trucos e incidencias comunes (y sus soluciones) que puede encontrar, visite la sección de [solución de problemas](../../../developer-guide/etendo-classic/concepts/common-issues-tips-and-tricks.md#data-access-layer). + +--- + +Este trabajo es una obra derivada de [Capa de Acceso a Datos](http://wiki.openbravo.com/wiki/Data_Access_Layer){target="\_blank"} de [Openbravo Wiki](http://wiki.openbravo.com/wiki/Welcome_to_Openbravo){target="\_blank"}, utilizada bajo [CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="\_blank"}. Esta obra está licenciada bajo [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/){target="\_blank"} por [Etendo](https://etendo.software){target="\_blank"}. + +--- + +--- + +--- diff --git a/docs/es/developer-guide/etendo-classic/getting-started/installation/local-development.md b/docs/es/developer-guide/etendo-classic/getting-started/installation/local-development.md new file mode 100644 index 0000000000..6c0abe12d2 --- /dev/null +++ b/docs/es/developer-guide/etendo-classic/getting-started/installation/local-development.md @@ -0,0 +1,212 @@ +--- +tags: + - Primeros pasos + - Desarrollo + - Instalación + - Desarrollo local + - IntelliJ +--- + +# Instalar Etendo - Entorno de Desarrollo Local + +## Visión general + +Esta guía cubre la configuración de un entorno local de desarrollo de Etendo. Utiliza IntelliJ IDEA con una instancia local de Tomcat para ejecutar Etendo, y Docker para ejecutar Copilot y la UI principal como servicios en contenedores. + +## Requisitos previos + +Antes de empezar, asegúrate de que lo siguiente está listo: + +- [Requisitos del sistema](requirements.md) +- [PostgreSQL configurado](postgresql-configuration.md) +- [Credenciales de GitHub](use-of-repositories-in-etendo.md) +- [Docker](https://docs.docker.com/get-docker/){target="_blank"} versión `26.0.0` o superior +- [Docker Compose](https://docs.docker.com/compose/install/){target="_blank"} versión `2.26.0` o superior +- **Clave de API de OpenAI** — requerida para Copilot. Usa tu propia clave de [OpenAI](https://platform.openai.com/account/api-keys){target="_blank"} o contacta con [Etendo](https://etendo.software){target="_blank"} para obtener una. Para más detalles sobre proveedores compatibles, consulta la [guía de instalación de Copilot](../../../etendo-copilot/installation.md#configuration-variables). + +!!! warning + Evita instalar Docker mediante [Snap](https://snapcraft.io){target="_blank"} — sus restricciones de sandbox pueden impedir que los contenedores Docker de Etendo accedan correctamente a los directorios del host. Instala Docker siguiendo la guía oficial para tu distribución. + +## Instalación + +### 1. Clonar el proyecto + +```bash title="Terminal" +cd /path/to/workspace +git clone https://github.com/etendosoftware/etendo_base.git EtendoERP +cd EtendoERP +``` + +### 2. Añadir credenciales de GitHub + +Edita `gradle.properties` y añade tus credenciales de GitHub. Para generarlas, sigue la guía [Uso de repositorios en Etendo](use-of-repositories-in-etendo.md). + +```groovy title="gradle.properties" +githubUser= +githubToken=<*******> +``` + +### 3. Expandir el proyecto + +=== ":octicons-file-zip-24: Source Format" + + Se recomienda el formato fuente para desarrollo local, ya que proporciona acceso completo a la base de código. + + ```bash title="Terminal" + ./gradlew expand + ``` + +=== ":material-language-java: JAR Format" + + Descomenta la dependencia del core en `build.gradle`: + + ```groovy title="build.gradle" + implementation('com.etendoerp.platform:etendo-core:') + ``` + + !!! info + Para conocer las versiones disponibles, visita las [Notas de versión de Etendo](../../../../whats-new/release-notes/etendo-classic/release-notes.md). + +### 4. Aplicar la plantilla local + +Ejecuta la siguiente tarea para configurar todas las variables necesarias para Etendo, Copilot y la UI principal: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local +``` + +Cuando se te solicite, introduce tu **Clave de API de OpenAI**. + +La plantilla configura `gradle.properties` automáticamente con todos los ajustes necesarios para un entorno local, incluyendo los servicios Docker de Copilot y la UI principal. + +!!! info "Availability" + `setup.applyTemplates` está disponible a partir de **Etendo 26**, o en versiones anteriores con el [Etendo Gradle Plugin 3.0.0](../../../../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) o superior. + +!!! info + Para más detalles sobre las plantillas disponibles, opciones y uso avanzado, consulta la guía [Cómo usar Setup Apply Templates](../../how-to-guides/how-to-use-setup-apply-templates.md). + +!!! tip "Alternativa: configuración manual" + Configura las variables directamente en `gradle.properties` y aplícalas ejecutando: + ```bash + ./gradlew setup --info + ``` + +!!! tip "Alternativa: configuración interactiva" + Para una configuración totalmente guiada, propiedad por propiedad, ejecuta la configuración interactiva: + ```bash + ./gradlew setup -Pinteractive=true --console=plain + ``` + Para más detalles, consulta la guía [Cómo usar la configuración interactiva](../../how-to-guides/how-to-use-interactive-setup.md). + +### 5. Instalar Etendo + +```bash title="Terminal" +./gradlew install smartbuild --info +``` + +Esto crea la base de datos, compila las fuentes y despliega en el directorio local de Tomcat. + +### 6. Iniciar servicios Docker + +```bash title="Terminal" +./gradlew resources.up --info +``` + +Esto inicia los contenedores de **Copilot** y la **UI principal**. Ambos están incluidos en la instalación base. + +## Ejecutar en IntelliJ + +=== "IntelliJ IDEA Community Edition" + + 1. Descarga e instala [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download){target="_blank"}. + + 2. Abre el directorio fuente de Etendo con IntelliJ: + + ![open-project.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/open-project.png) + + 3. Instala el plugin **Smart Tomcat**: ve a `Settings` > `Plugins` y busca `Smart Tomcat`. + + ![install-smart-tomcat.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/install-smart-tomcat.png) + + 4. Descarga [Apache Tomcat](https://tomcat.apache.org/download-90.cgi){target="_blank"} y descomprímelo dentro del directorio del proyecto. + + 5. Configura la ejecución de Tomcat: + + - Ve a `Current File` > `Edit Configurations`. + + ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/edit-configurations.png) + + - Haz clic en `+` y añade una nueva configuración de **Smart Tomcat** con los siguientes valores: + - **Name**: `Tomcat` + - **Tomcat Server**: selecciona el directorio de Apache Tomcat descomprimido + - **Deployment directory**: selecciona el directorio `WebContent` del proyecto + - **Context path**: usa el mismo valor definido en `gradle.properties` (por defecto: `/etendo`) + - **Before launch**: elimina todas las tareas por defecto + + ![add-new-configuration.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-new-configuration.png) + + 6. Inicia Tomcat desde la configuración de ejecución: + + ![start-tomcat.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/start-tomcat.png) + +=== "IntelliJ IDEA Ultimate" + + 1. Descarga e instala [IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download){target="_blank"}. + + 2. Abre el directorio fuente de Etendo con IntelliJ. + + 3. Configura la ejecución de Tomcat: + + - Ve a `Current File` > `Edit Configurations`. + + ![edit-configurations.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/edit-configurations.png) + + - Selecciona la configuración de Tomcat de la lista y verifica los ajustes del servidor Tomcat. + + ![add-new-configuration-ultimate.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-new-configuration-ultimate.png) + + - En la sección **Deployment**, añade fuentes externas y selecciona la carpeta `${env.CATALINA_HOME}/webapps/etendo`. + + ![add-external-source.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/add-external-source.png) + + ![config-deployment-folder.png](../../../../assets/developer-guide/etendo-classic/getting-started/instalation/install-etendo-development-environment/config-deployment-folder.png) + + 4. Inicia Tomcat desde la configuración de ejecución. + +## Acceder a la instalación + +Una vez que Tomcat y los servicios Docker estén en ejecución: + +| Interfaz | URL | +|---|---| +| **UI principal** | [http://localhost:3000](http://localhost:3000){target="_blank"} | +| **UI clásica** | [http://localhost:8080/etendo](http://localhost:8080/etendo){target="_blank"} | + +!!! tip "Credenciales por defecto" + Usuario: `admin` + Contraseña: `admin` + +## Opcional + +### Habilitar logs de Etendo + +1. Abre `config/log4j2-web.xml` y descomenta la referencia al appender `Console`: + + ```xml title="config/log4j2-web.xml" + + + + + + ``` + +2. Ejecuta `smartbuild` para aplicar el cambio: + + ```bash title="Terminal" + ./gradlew smartbuild --info + ``` + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. + +--- \ No newline at end of file diff --git a/docs/es/developer-guide/etendo-classic/getting-started/installation/production-server.md b/docs/es/developer-guide/etendo-classic/getting-started/installation/production-server.md new file mode 100644 index 0000000000..a1f7c537cf --- /dev/null +++ b/docs/es/developer-guide/etendo-classic/getting-started/installation/production-server.md @@ -0,0 +1,149 @@ +--- +tags: + - Primeros pasos + - Instalación + - Servidor + - Producción + - ISO +--- + +# Instalar Etendo - Instalación en servidor + +## Visión general + +Esta guía cubre la instalación de Etendo en un servidor de producción utilizando la **ISO de Etendo**, que automatiza la configuración del sistema operativo y la configuración del entorno base. Copilot y la Interfaz principal (Main UI) se incluyen en la instalación base y se configuran como parte de este proceso. + +## Requisitos previos + +- [Credenciales de GitHub](use-of-repositories-in-etendo.md) +- **Clave de API de OpenAI** — necesaria para Copilot. Usa tu propia clave de [OpenAI](https://platform.openai.com/account/api-keys){target="_blank"} o contacta con [Etendo](https://etendo.software){target="_blank"} para obtener una. Para más detalles sobre proveedores compatibles, consulta la [guía de instalación de Copilot](../../../etendo-copilot/installation.md#configuration-variables). + +!!! info + La ISO configura automáticamente el stack completo (SO, PostgreSQL, Docker, Tomcat). No se requiere ninguna configuración adicional del sistema. + +## Instalación + +### 1. Descargar la ISO + +Descarga la última ISO de Etendo desde la página [Etendo ISO - Notas de la versión](../../../../whats-new/release-notes/etendo-classic/iso.md). + +### 2. Aprovisionar el servidor + +Cómo uses la ISO depende de tu infraestructura: + +- **Bare metal / servidor físico**: graba la ISO en una unidad USB usando [balenaEtcher](https://etcher.balena.io/#download-etcher){target="_blank"} (Linux/macOS) o [Rufus](https://rufus.ie/en/){target="_blank"} (Windows), y luego arranca desde el USB. +- **AWS**: se publica una AMI oficial de Etendo junto con cada versión de la ISO. Encuentra el ID de la AMI en la página [Etendo ISO - Notas de la versión](../../../../whats-new/release-notes/etendo-classic/iso.md) y luego [lanza una nueva instancia EC2 a partir de ella](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html){target="_blank"}. +- **Hetzner Cloud**: sube la ISO como una imagen personalizada desde la consola de Hetzner Cloud y crea un nuevo servidor a partir de ella. Consulta la [documentación de Hetzner](https://docs.hetzner.com){target="_blank"} para más detalles. +- **Scaleway**: sube la ISO y utiliza los [modos de arranque personalizados](https://www.scaleway.com/en/docs/instances/how-to/use-boot-modes/){target="_blank"} para aprovisionar una instancia a partir de ella. +- **Otros proveedores cloud**: sube la ISO como una imagen personalizada y crea una nueva instancia a partir de ella. Consulta la documentación de tu proveedor para importar imágenes de SO personalizadas. +- **Máquina virtual**: monta la ISO directamente en tu hipervisor. Se recomiendan [Qemu](https://www.qemu.org/download/){target="_blank"} con [Virt-Manager (Linux)](https://virt-manager.org/download.html){target="_blank"} o [UTM (macOS)](https://mac.getutm.app/){target="_blank"}. + +### 3. Arrancar e instalar el SO + +Inicia el sistema desde la ISO. Sigue las indicaciones: + +- **Conexiones de red**: verifica que se asigna correctamente una dirección IP y que hay acceso a internet. +- **Configuración de almacenamiento**: selecciona el disco de destino. +- **Configuración del perfil**: introduce tu nombre, el nombre del servidor y una contraseña para el usuario `etendo`. + +Espera a que finalicen la instalación del sistema operativo y la actualización del servidor. Cuando se solicite, selecciona **Reiniciar ahora**. + +Tras el reinicio, la configuración final del servidor se ejecuta automáticamente. Espera a que termine: el entorno base quedará listo. + +!!! info "Instalación sin conexión a internet" + Si no hay conexión a internet disponible durante la instalación, selecciona **Continuar sin internet** en el paso de configuración de red. Tras la instalación del SO y el reinicio, configura la red, conéctate a internet, inicia sesión como superusuario (`sudo su`) y ejecuta `etendo-install`. + +### 4. Añadir credenciales de GitHub + +Una vez que el servidor esté listo, ve al directorio del proyecto y añade tus credenciales de GitHub en `gradle.properties`. Para generarlas, sigue la guía [Uso de repositorios en Etendo](use-of-repositories-in-etendo.md). + +```bash title="Terminal" +cd /opt/EtendoERP +``` + +```groovy title="gradle.properties" +githubUser= +githubToken=<*******> +``` + +### 5. Aplicar la plantilla de servidor + +Ejecuta la siguiente tarea para configurar todas las variables necesarias para el entorno de servidor: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=server +``` + +Cuando se solicite, proporciona: + +- **URL de Etendo ERP** — la URL completa de tu instalación (p. ej., `http://myserver.com/etendo`). El nombre de contexto y el host se derivan automáticamente. +- **Clave de API de OpenAI** — tu clave para la integración de Copilot (la entrada se enmascara). + +!!! info "Disponibilidad" + `setup.applyTemplates` está disponible a partir de **Etendo 26**, o en versiones anteriores con el [Etendo Gradle Plugin 3.0.0](../../../../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) o superior. + +!!! info + Para más detalles sobre plantillas disponibles, opciones y uso avanzado, consulta la guía [Cómo usar Setup Apply Templates](../../how-to-guides/how-to-use-setup-apply-templates.md). + +!!! tip "Alternativa: configuración manual" + Configura las variables directamente en `gradle.properties` y aplícalas ejecutando: + ```bash + ./gradlew setup --info + ``` + +!!! tip "Alternativa: configuración interactiva" + Para una configuración totalmente guiada, propiedad por propiedad, ejecuta la configuración interactiva: + ```bash + ./gradlew setup -Pinteractive=true --console=plain + ``` + Para más detalles, consulta la guía [Cómo usar la configuración interactiva](../../how-to-guides/how-to-use-interactive-setup.md). + +### 6. Iniciar servicios Docker + +```bash title="Terminal" +./gradlew resources.up +``` + +Esto inicia los contenedores de **Copilot** y de la **Interfaz principal (Main UI)**. + +### 7. Compilar y desplegar + +```bash title="Terminal" +./gradlew install smartbuild --info +``` +Esto crea la base de datos, compila los fuentes y despliega en el directorio local de Tomcat. + +### 8. Configurar Apache + +Desde el directorio `/opt/EtendoERP`, ejecuta el script de configuración de Apache: + +```bash title="Terminal" +cd utils +sudo ./apache-config.sh +``` + +Esto configura Apache como un proxy inverso para el servidor. Una vez completado, las URLs de la Interfaz principal (Main UI) y la Interfaz clásica (Classic UI) se establecen automáticamente en función del dominio proporcionado. + +### 9. Iniciar Tomcat + +```bash title="Terminal" +sudo /etc/init.d/tomcat start +``` + +## Acceder a la instalación + +Una vez que todos los servicios estén en ejecución: + +| Interfaz | URL | +|---|---| +| **Interfaz principal (Main UI)** | `https:///` | +| **Interfaz clásica (Classic UI)** | `https:///` | + +!!! tip "Credenciales por defecto" + Usuario: `admin` + Contraseña: `admin` + + Cambia la contraseña por defecto inmediatamente después del primer inicio de sesión en un entorno de producción. + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. \ No newline at end of file diff --git a/docs/es/developer-guide/etendo-classic/getting-started/installation/requirements.md b/docs/es/developer-guide/etendo-classic/getting-started/installation/requirements.md new file mode 100644 index 0000000000..232faa9eb1 --- /dev/null +++ b/docs/es/developer-guide/etendo-classic/getting-started/installation/requirements.md @@ -0,0 +1,75 @@ +--- +title: Requisitos + +tags: + - Requisitos de Etendo + - Navegadores web + - Conectividad de red + - Plataforma Java + - Pila de software + - Etendo Classic + - Requisitos +--- +## Visión general + +Esta sección explica la pila de herramientas y los requisitos para instalar Etendo. + +## Cliente: navegadores web + +| | | | | +| --- | --- | --- | --- | +| **Navegador web** | | **Mínimo requerido** | **Versión recomendada** | +| ![Chrome logo.png](../../../../assets/drive/mOCl2euDZU8wO2MedNIrplZBmdiqguZm86ab6e3RVnKM4B4uX3s0UMMf0FVPIYLYeHmFy8FHPMNsJ9nOX6rXZAo76IzmQSSPrrN2DgNiD3DrJIG2j25JRJvASy7yiBGzsJBRp2Cg.png) | **Google Chrome** | 95 | **97 o superior** | +| ![Safari icon large.png](../../../../assets/drive/JVloGgFusza-4BFZ30Gjra-m_4Aknv5c3Y5vJEoYZ4B4HiEV09e6bMcnSfyImo7D7TJbgPRsIIUScqqatrJBW8SoMV7HmSe3q12JLmaEp7AIYT2FSuLrjcz2mnT3fQ6NCMWg0zAu.png) | **Apple Safari** | 12 | **14 o superior** | +| ![Firefox logo 2017.png](../../../../assets/drive/p3EzTz7im_NXkvyXHa5aIk29Va-vEN-96NUPsPr1BLqnWL7AA6CuewRnASM9EfEyMxRmaGmq3pNHPbAqNy2ZJL6xAuEUtM5q10QXfcadnvVJwW7-ISmAZ9xNgbOSs3XwSDsppY1P.png) | **Mozilla Firefox ESR** | 78 | **90 o superior** | +| ![Microsoft Edge logo.png](../../../../assets/drive/acUA_bLGo6j1tRenMx_zSRQddDaf2N86N0iL2cT5o5Om5Gc96_YzQ0HOZ_CdZAitgs1m6M24Nbk5cbs1Et2I0MrUPB1a5sapBINQg_4Jzg8C_aoCmS3-CaKmn8BItB4O25SvFpy6.png) | **Microsoft Edge (basado en Chromium)** | 95 | **97 o superior** | + +## Cliente: conectividad de red + +Aquí se muestran configuraciones de ejemplo, en función del número de usuarios concurrentes que se deban soportar. Estas asumen que el servidor está alojado con una conexión rápida, por lo que su red no es un factor limitante. + +| Ancho de banda de bajada | Usuarios concurrentes | +| --- | --- | +| 3Mbit/s | <=10 | +| 10MBit/s | <=20 | +| 100MBit/s | <=100 | + +## Servidor: basado en Java = multiplataforma + +Etendo se ejecuta allí donde funcione el JDK de Java. Actualmente, esto significa: + +### Sistemas operativos: +:material-microsoft-windows: Windows
+:simple-linux: Distribución Linux
+:simple-freebsd: FreeBSD
+:simple-macos: Mac OSX
+Solaris y más.
+ +### Arquitecturas: +x86, x86\_64, IA64, Sparc, PowerPC, AIX. +PostgreSQL también debería estar soportado por tu sistema objetivo. + +## Pila de software + +### Etendo 25 + +| Componente de la pila | Versiones soportadas | Versión recomendada | Guía de instalación | +| :--- | :--- | :--- | :--- | +| :fontawesome-brands-java: Java SE | 17 | Última 17.x | [Guía de instalación de Java](https://www.oracle.com/java/technologies/downloads/#java17){target="_blank"} | +| :simple-postgresql: PostgreSQL | 14.x, 16.x, Amazon RDS | Última 16.x | [Guía de instalación de Postgres ](https://www.postgresql.org/download/){target="_blank"} | +| :simple-apachetomcat: Apache Tomcat | 9.0.x | Última 9.0.x | [Guía de instalación de Tomcat](https://tomcat.apache.org/download-90.cgi){target="_blank"} | +| :simple-gradle: Gradle | 8.12.1 | 8.12.1 | [Documentación de Gradle](https://docs.gradle.org/8.12.1){target="_blank"} | +| :material-database: Oracle | 19c (LTS) | 19c (LTS) | + +### Etendo 24 y anteriores + +| Componente de la pila | Versiones soportadas | Versión recomendada | Guía de instalación | +| :--- | :--- | :--- | :--- | +| :fontawesome-brands-java: Java SE | 11 | Última 11.x | [Guía de instalación de Java](https://www.java.com/en/download/manual.jsp){target="_blank"} | +| :simple-postgresql: PostgreSQL | 10.x, 11.x, 12.x, 13.x, Amazon RDS | Última 14.x | [Guía de instalación de Postgres ](https://www.postgresql.org/download/){target="_blank"} | +| :simple-apachetomcat: Apache Tomcat | 8.5.x (x >= 24) | Última 8.5.x | [Guía de instalación de Tomcat](https://tomcat.apache.org/download-80.cgi){target="_blank"} | +| :simple-gradle: Gradle | 7.3.2 | 7.3.2 | [Documentación de Gradle](https://docs.gradle.org/7.3.2){target="_blank"} | +| :material-database: Oracle | 19c (LTS) | 19c (LTS) | | + +--- +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. \ No newline at end of file diff --git a/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-create-a-report.md b/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-create-a-report.md index db738e5e05..b711c472c3 100644 --- a/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-create-a-report.md +++ b/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-create-a-report.md @@ -44,7 +44,7 @@ Algunas propiedades de Jaspersoft Studio deben modificarse para que funcione cor ### Configuración del Classpath -En Jaspersoft Studio, se supone que cada informe forma parte de un proyecto. Por lo tanto, primero necesita crear un nuevo proyecto (`File` > `New` > `Project`). +En Jaspersoft Studio, se supone que cada informe forma parte de un un proyecto. Por lo tanto, primero necesita crear un nuevo proyecto (`File` > `New` > `Project`). El proyecto tiene un classpath, y aquí es donde puede añadir los jars que necesite. diff --git a/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md b/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md new file mode 100644 index 0000000000..8bc30e2a30 --- /dev/null +++ b/docs/es/developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md @@ -0,0 +1,355 @@ +--- +title: Cómo usar Setup Apply Templates +tags: + - Cómo hacer + - Gradle + - Setup + - Configuración + - Plantillas +--- + +# Cómo usar Setup Apply Templates + +## Visión general + +La tarea de Gradle `setup.applyTemplates` permite configurar rápidamente un proyecto de Etendo usando plantillas predefinidas o personalizadas. Las plantillas son archivos que contienen propiedades, dependencias y módulos que se aplican automáticamente a tu proyecto, agilizando tanto la configuración inicial como las configuraciones específicas por entorno. + +El plugin incluye dos plantillas integradas: **local** (para desarrollo local) y **server** (para despliegues en servidor/producción con configuración interactiva). El sistema es extensible: cualquier archivo `.template` añadido a los recursos del plugin se descubre automáticamente y queda disponible. + +Esta guía explica cómo usar la tarea, las plantillas disponibles, el formato de plantilla, el soporte de placeholders y cómo crear plantillas personalizadas. + +## Requisitos previos + +- Un proyecto de Etendo con el plugin de Gradle instalado. +- El proyecto no debería tener ya una **Base de datos** configurada. Si la tiene, usa el flag `--force` para sobrescribir esta comprobación. + +## Uso + +La tarea puede ejecutarse en cuatro modos diferentes: selección interactiva, plantilla incluida, archivo local o URL remota. + +### Modo interactivo + +Cuando no se proporcionan opciones, la tarea muestra un menú interactivo para seleccionar entre las plantillas incluidas disponibles: + +```bash title="Terminal" +./gradlew setup.applyTemplates +``` + +Salida: + +```text +====================================================== + SELECT A TEMPLATE +====================================================== + 1) local + 2) server + + You can also use: + --template= (by name) + --file= (local file) + --url= (remote URL) + + >> Enter your selection (1-2): +``` + +### Aplicar una plantilla incluida + +Usa la opción `--template` para aplicar una de las plantillas incluidas con el plugin: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local +``` + +### Aplicar una plantilla desde un archivo local + +Usa la opción `--file` para aplicar una plantilla almacenada en tu sistema de archivos local: + +```bash title="Terminal" +./gradlew setup.applyTemplates --file=/path/to/custom.template +``` + +### Aplicar una plantilla desde una URL remota + +Usa la opción `--url` para descargar y aplicar una plantilla desde una ubicación remota: + +```bash title="Terminal" +./gradlew setup.applyTemplates --url=https://example.com/templates/my-setup.template +``` + +### Modo forzado + +Por defecto, la tarea comprueba si ya existe una **Base de datos** para el proyecto. Si existe, la tarea se aborta para evitar modificaciones no deseadas. Para omitir esta comprobación, usa el flag `--force`: + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local --force +``` + +!!!warning + Usar `--force` omite la validación del entorno. Asegúrate de entender las implicaciones antes de aplicar una plantilla a un proyecto ya configurado. + +## Opciones disponibles + +| Opción | Descripción | Ejemplo | +|---|---|---| +| `--template` | Nombre de una plantilla incluida desde los recursos del plugin | `--template=local` | +| `--file` | Ruta a un archivo `.template` local | `--file=/path/to/custom.template` | +| `--url` | URL a un archivo `.template` remoto | `--url=https://example.com/my.template` | +| `--force` | Omitir la comprobación de existencia de la **Base de datos** | `--force` | + +## Plantillas incluidas + +### `local` — Desarrollo local + +Diseñada para entornos de desarrollo local. La mayoría de valores están preconfigurados con valores por defecto razonables. El único valor que requiere entrada del usuario es la **OpenAI API Key**. + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=local +``` + +#### Configuración interactiva + +Al aplicarse, la tarea solicita el siguiente valor: + +| # | Prompt | Descripción | +|---|---|---| +| 1 | OpenAI API Key | Tu clave de API de OpenAI para la integración con Copilot. La entrada se enmascara por seguridad. | + +### `server` — Despliegue en servidor / producción + +Diseñada para entornos de servidor y producción. Esta plantilla usa **placeholders** que se resuelven de forma interactiva durante la ejecución: se solicita al usuario que proporcione valores específicos del entorno. + +```bash title="Terminal" +./gradlew setup.applyTemplates --template=server +``` + +#### Configuración interactiva + +Al aplicarse, la tarea solicita los siguientes valores: + +| # | Prompt | Variable | Descripción | +|---|---|---|---| +| 1 | URL de Etendo ERP | `context.url` | La dirección web completa de tu aplicación Etendo ERP (p. ej., `http://myserver.com/etendo`). A partir de este valor, se derivan automáticamente `context.name` (último segmento de la ruta) y `context.host` (URL base sin el nombre del contexto). | +| 2 | OpenAI API Key | `openai.api.key` | Tu clave de API de OpenAI para la integración con Copilot. La entrada se enmascara por seguridad. | + +**Ejemplo de interacción:** + +```text +====================================================== + CONFIGURATION REQUIRED + Template 'server' needs the following input + Please type each value and press ENTER +====================================================== + + + [1/2] Etendo ERP URL (e.g., http://clienthost/mycompanyname) + + >> http://myserver.com/etendo + + + [2/2] OpenAI API Key + + >> **** +``` + +#### Valores derivados + +A partir de la entrada `context.url`, se derivan automáticamente los siguientes valores: + +| Entrada | Variable derivada | Valor | +|---|---|---| +| `http://myserver.com/etendo` | `context.name` | `etendo` | +| | `context.host` | `http://myserver.com/` | + +Estos valores derivados se usan para configurar: + +- `etendo.classic.url` → `http://host.docker.internal:80/{context.name}` +- `etendo.classic.host` → `{context.url}` +- `next.public.app.url` → `{context.host}` + +## Funcionalidades avanzadas + +### Formato de plantilla + +Las plantillas usan un formato similar a INI con tres secciones: `[properties]`, `[dependencies]` y `[modules]`. + +Dentro de la sección `[properties]`, los comentarios (líneas que empiezan por `#` o `##`) se conservan y se usan como **separadores de sección** en `gradle.properties`. Esto ayuda a organizar la configuración generada en grupos lógicos. + +```properties title="example.template" +[properties] +## Main-UI +key1=value1 +key2=value2 + +#COPILOT +key3=value3 + +[dependencies] +implementation 'com.example:library:1.0.0' + +[modules] +com.etendoerp:mymodule:1.0.0 +``` + +#### Soporte de placeholders + +Las plantillas pueden usar **placeholders** con el formato `{placeholder.name}` dentro de los valores de propiedades. Cuando la tarea detecta placeholders, solicita automáticamente al usuario los valores y los sustituye antes de aplicar la plantilla. + +```properties title="server.template (excerpt)" +[properties] +etendo.classic.host={context.url} +next.public.app.url={context.host} +OPENAI_API_KEY={openai.api.key} +``` + +Los nombres de placeholders pueden contener letras, números, puntos y guiones bajos (p. ej., `{context.url}`, `{openai.api.key}`). + +#### Detalles de secciones + +##### `[properties]` + +Las propiedades se aplican al archivo `gradle.properties`. Cada línea debe seguir el formato `key=value`. + +- Si una propiedad ya existe, se actualiza su valor. +- Si una propiedad no existe, se añade al final. +- Las líneas de comentario (`#` o `##`) dentro de esta sección se escriben como separadores de sección en el archivo de salida. +- Los valores sensibles (claves que contienen `KEY`, `TOKEN`, `PASSWORD` o `SECRET`) se enmascaran en la salida de consola por seguridad. + +##### `[dependencies]` + +Las dependencias se añaden al bloque `dependencies {}` en `build.gradle`. + +- Soporta cualquier configuración válida de dependencias de Gradle (`implementation`, `runtimeOnly`, `testImplementation`, etc.). +- Si una dependencia ya existe, se omite. +- Las nuevas dependencias se agrupan bajo un comentario `// Template Dependencies`. + +##### `[modules]` + +Los módulos pueden especificarse en dos formatos: + +| Tipo | Formato | Ejemplo | +|---|---|---| +| Artefacto | `group:artifact:version` | `com.etendoerp:copilot-extras:1.0.0` | +| Repositorio Git | `git::::branch=` | `git::https://github.com/etendosoftware/com.etendoerp.task.git::branch=main` | + +- Los **módulos de artefacto** se añaden al archivo `artifacts.list.COMPILATION.gradle`. Si ya existen, se omiten. +- Los **módulos Git** se clonan en el directorio `modules/`. Si el directorio destino ya existe, se omite el clonado. Si no se especifica rama, la tarea intenta `main`, luego `master` y después la rama por defecto del repositorio. + +### Mecanismo de copia de seguridad + +Antes de aplicar cualquier cambio, la tarea crea automáticamente copias de seguridad de los archivos que se van a modificar: + +- `gradle.properties` se respalda en `.template-backups/gradle.properties.` +- `build.gradle` se respalda en `.template-backups/build.gradle.` + +El formato del timestamp es `yyyyMMdd_HHmmss`. Estas copias de seguridad permiten restaurar configuraciones anteriores si es necesario. + +### Creación de plantillas personalizadas + +El sistema de plantillas es **extensible**: cualquier archivo `.template` añadido al directorio `src/main/resources/templates/` del plugin se descubre automáticamente y se lista en el menú interactivo. No se requieren cambios de código. + +Para crear una plantilla personalizada: + +1. Crea un archivo nuevo con la extensión `.template`. +2. Añade las secciones deseadas (`[properties]`, `[dependencies]`, `[modules]`) con el contenido apropiado. +3. Usa la sintaxis `{placeholder.name}` para valores que deban proporcionarse de forma interactiva. +4. Aplícala usando la opción `--file` o `--url`, o añádela al directorio de recursos para su descubrimiento automático. + +#### Ejemplo: plantilla personalizada con placeholders + +```properties title="staging.template" +[properties] +## Base de datos +bbdd.driver=org.postgresql.Driver +bbdd.url=jdbc:postgresql://{db.host}:5432/{db.name} +context.name={app.context} + +## Entorno +environment=staging +log.level=INFO + +[dependencies] +implementation 'com.etendoerp:copilot:1.0.0' + +[modules] +com.etendoerp:mymodule:1.0.0 +``` + +Aplicarla: + +```bash title="Terminal" +./gradlew setup.applyTemplates --file=./staging.template +``` + +!!!info + Las plantillas personalizadas cargadas mediante `--file` o `--url` que contengan placeholders también activarán el prompt interactivo. Sin embargo, solo los placeholders que coincidan con las definiciones de prompt integradas mostrarán mensajes descriptivos; el resto usará un prompt genérico. + +### Integración CI/CD + +La tarea `setup.applyTemplates` puede usarse en pipelines de CI/CD. Como los prompts interactivos requieren entrada del usuario, usa la plantilla `local` o una plantilla personalizada sin placeholders en contextos automatizados. + +#### Ejemplo: GitHub Actions + +```yaml title=".github/workflows/setup.yml" +- name: Apply Etendo template + run: ./gradlew setup.applyTemplates --template=local --force +``` + +#### Ejemplo: plantilla remota en CI + +```bash title="Terminal" +./gradlew setup.applyTemplates --url=$TEMPLATE_URL --force +``` + +!!!info + Usa siempre el flag `--force` en entornos CI/CD donde el estado de la **Base de datos** puede variar entre ejecuciones. Evita usar la plantilla `server` en CI/CD, ya que requiere entrada interactiva. + +### Flujo de ejecución + +Cuando se ejecuta la tarea, sigue esta secuencia: + +1. **Validación del entorno** — Comprueba si ya existe una **Base de datos** (a menos que se haya establecido `--force`). +2. **Resolución de plantilla** — Carga la plantilla desde el origen especificado (recursos, archivo, URL o selección interactiva). +3. **Resolución de placeholders** — Si la plantilla contiene placeholders, solicita al usuario los valores y los sustituye. +4. **Creación de copia de seguridad** — Crea copias de seguridad con timestamp de `gradle.properties` y `build.gradle`. +5. **Aplicación de plantilla** — Aplica propiedades (con separadores de sección), dependencias y módulos desde la plantilla. +6. **Ejecución de setup** — Ejecuta `./gradlew setup` automáticamente para aplicar los cambios de configuración. + +#### Ejemplo de salida + +```text +Applying template: local + [properties] -> gradle.properties + docker_com.etendoerp.mainui=true + etendo.classic.url=http://host.docker.internal:8080/etendo + etendo.classic.host=https://localhost:8080/etendo + next.public.app.url=https://localhost:3000/ + authentication.class=com.etendoerp.etendorx.auth.SWSAuthenticationManager + ws.maxInactiveInterval=3600 + docker_com.etendoerp.copilot=true + COPILOT_HOST=localhost + COPILOT_PORT=5005 + OPENAI_API_KEY=**** + ETENDO_HOST=http://localhost:8080/etendo + ETENDO_HOST_DOCKER=http://host.docker.internal:8080/etendo + +Template 'local' applied successfully +``` + +!!!note + Los valores sensibles (claves API, tokens, contraseñas) se enmascaran automáticamente en la salida de consola. + +## Resolución de problemas + +| Problema | Causa | Solución | +|---|---|---| +| `Template '' not found in resources` | La plantilla incluida especificada no existe | Ejecuta la tarea sin opciones para ver las plantillas disponibles, o usa `--file`/`--url` en su lugar | +| `Template file not found: ` | La ruta del archivo local es incorrecta o el archivo no existe | Verifica la ruta del archivo y asegúrate de que el archivo existe | +| `Failed to load template from URL` | La URL no es accesible o devolvió un error | Comprueba la URL, la conectividad de red y asegúrate de que el servidor remoto es accesible | +| `Database already exists` | El proyecto ya tiene una **Base de datos** configurada | Usa el flag `--force` para omitir esta comprobación, o elimina primero la **Base de datos** existente | +| `Value for '' cannot be empty` | Se proporcionó un valor vacío durante el prompt interactivo | Proporciona un valor no vacío para todos los campos solicitados | +| `Could not find dependencies block in build.gradle` | El archivo `build.gradle` no contiene un bloque `dependencies {}` | Asegúrate de que `build.gradle` tiene un bloque `dependencies { }` válido antes de ejecutar la tarea | +| `Invalid git module format` | La línea del módulo git no sigue el formato esperado | Usa el formato `git::::branch=` | + +--- + +- This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L.](https://etendo.software){target="_blank"}. \ No newline at end of file diff --git a/docs/es/developer-guide/etendo-rx/connectors/openbravo-connector/installation-guide.md b/docs/es/developer-guide/etendo-rx/connectors/openbravo-connector/installation-guide.md index 6378c7691d..d6038cd9f7 100644 --- a/docs/es/developer-guide/etendo-rx/connectors/openbravo-connector/installation-guide.md +++ b/docs/es/developer-guide/etendo-rx/connectors/openbravo-connector/installation-guide.md @@ -548,4 +548,6 @@ En el entorno de Openbravo, con sesión iniciada como `System Administrator`, es --- Este trabajo está licenciado bajo :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} por [Futit Services S.L](https://etendo.software){target="_blank"}. +--- + --- \ No newline at end of file diff --git a/docs/es/developer-guide/etendo-rx/getting-started.md b/docs/es/developer-guide/etendo-rx/getting-started.md index 6a734f6881..c7ae8fab78 100644 --- a/docs/es/developer-guide/etendo-rx/getting-started.md +++ b/docs/es/developer-guide/etendo-rx/getting-started.md @@ -202,4 +202,8 @@ Actualmente, la mayor parte de los servicios de Etendo RX se basan en imágenes | `DEBUG_MODE` | Habilitar el modo de depuración para la aplicación | boolean | `true`, `false` | `false` | — | --- -This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L.](https://etendo.software){target="_blank"}. \ No newline at end of file +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L.](https://etendo.software){target="_blank"}. + +--- + +--- diff --git a/docs/es/getting-started/interactive-installation.md b/docs/es/getting-started/interactive-installation.md index ebf8349b12..13d444879a 100644 --- a/docs/es/getting-started/interactive-installation.md +++ b/docs/es/getting-started/interactive-installation.md @@ -1,5 +1,5 @@ --- -title: Instalar Etendo - Guía interactiva +title: Install Etendo - Quick Installation Guide tags: - Instalación de Etendo @@ -8,18 +8,18 @@ tags: - Configuración de PostgreSQL - Entorno de Etendo - Instalar - - Instalación interactiva + - Quick Installation status: beta --- -# Instalar Etendo - Guía interactiva +# Install Etendo - Quick Installation Guide ## Visión general !!! example "IMPORTANTE: ESTA ES UNA VERSIÓN BETA" Está en desarrollo activo y puede contener **funcionalidades inestables o incompletas**. Úsela **bajo su propia responsabilidad**. El comportamiento del módulo puede cambiar sin previo aviso. No la utilice en entornos de producción. -Utilice el Sistema de configuración interactiva para instalar y configurar Etendo. El asistente le guía por cada ajuste, aplica valores predeterminados seguros y realiza cambios solo después de que usted los confirme. +Utilice la funcionalidad de Instalación rápida para instalar y configurar Etendo. El asistente le guía por cada ajuste, aplica valores predeterminados seguros y realiza cambios solo después de que usted los confirme. Beneficios clave: @@ -43,9 +43,99 @@ Antes de comenzar, es necesario disponer de: - Etendo Gradle Plugin [2.1.0](../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) o superior. Para más información, visite [Etendo Gradle Plugin](../developer-guide/etendo-classic/developer-tools/etendo-gradle-plugin.md). -## Proceso de instalación interactiva +## Quick Installation -### Preparar el entorno +Utilice la tarea `setup.applyTemplates` para configurar e instalar Etendo en unos pocos pasos usando plantillas predefinidas. Seleccione la pestaña que coincida con su entorno: + +=== ":material-laptop: Local Development" + + 1. Clone el proyecto Etendo Base: + ```bash title="Terminal" + cd /path/to/workspace + git clone https://github.com/etendosoftware/etendo_base.git EtendoERP + cd /path/to/workspace/EtendoERP + ``` + + 2. Añada las credenciales de GitHub a `gradle.properties`: + ```groovy title="gradle.properties" + githubUser= + githubToken=<*******> + ``` + + 3. Expanda Etendo Base: + ```bash title="Terminal" + ./gradlew expand + ``` + + 4. Aplique la plantilla local: + ```bash title="Terminal" + ./gradlew setup.applyTemplates --template=local + ``` + Cuando se le solicite, introduzca su **OpenAI API Key**. + + 5. Ejecute la instalación: + ```bash title="Terminal" + ./gradlew install smartbuild + ``` + + 6. Inicie Tomcat: + ```bash title="Terminal" + sudo /etc/init.d/tomcat start + ``` + + 7. Abra el navegador y navegue a `http://localhost:8080/etendo`. + +=== ":material-server: Server" + + 1. Clone el proyecto Etendo Base: + ```bash title="Terminal" + cd /opt/ + git clone https://github.com/etendosoftware/etendo_base.git EtendoERP + cd /opt/EtendoERP + ``` + + 2. Añada las credenciales de GitHub a `gradle.properties`: + ```groovy title="gradle.properties" + githubUser= + githubToken=<*******> + ``` + + 3. Expanda Etendo Base: + ```bash title="Terminal" + ./gradlew expand + ``` + + 4. Aplique la plantilla de servidor: + ```bash title="Terminal" + ./gradlew setup.applyTemplates --template=server + ``` + Cuando se le solicite, proporcione: + + - **Etendo ERP URL** — la dirección completa de su instalación (p. ej., `http://myserver.com/etendo`). El nombre de contexto y el host se derivan automáticamente. + - **OpenAI API Key** — su clave para la integración con Copilot (la entrada se enmascara). + + 5. Ejecute la instalación: + ```bash title="Terminal" + ./gradlew install smartbuild + ``` + + 6. Inicie Tomcat: + ```bash title="Terminal" + sudo /etc/init.d/tomcat start + ``` + + 7. Abra el navegador y navegue a `https:///`. + +!!! info + Para más detalles sobre las plantillas disponibles, opciones y uso avanzado, consulte la [guía Setup Apply Templates](../developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md). + +## Características avanzadas + +### Proceso de instalación interactiva + +Para una instalación totalmente guiada, paso a paso, con solicitudes por propiedad y un resumen de confirmación, utilice el asistente de configuración interactiva en lugar de `setup.applyTemplates`. + +#### Preparar el entorno Elija el formato de instalación y prepare los archivos base: @@ -126,7 +216,7 @@ Elija el formato de instalación y prepare los archivos base: ./gradlew expand ``` -### Iniciar la configuración interactiva +#### Iniciar la configuración interactiva Inicie el asistente de configuración interactiva: @@ -134,7 +224,7 @@ Inicie el asistente de configuración interactiva: ./gradlew setup -Pinteractive=true --console=plain ``` -### Navegar por el menú de configuración +#### Navegar por el menú de configuración Será posible ver el menú principal de configuración: @@ -155,7 +245,7 @@ Será posible ver el menú principal de configuración: 🎯 Seleccione una opción: ``` -### Configurar propiedades +#### Configurar propiedades Al seleccionar un grupo de configuración, se le guiará por cada propiedad, por ejemplo: @@ -175,7 +265,7 @@ Al seleccionar un grupo de configuración, se le guiará por cada propiedad, por 🔧 Propiedad: bbdd.password ℹ️ Contraseña de conexión a la base de datos - Valor actual: + Valor actual: 🔐 Nuevo valor (oculto): [La entrada de contraseña está oculta] ``` @@ -185,7 +275,7 @@ Al seleccionar un grupo de configuración, se le guiará por cada propiedad, por - **Las propiedades sensibles** (contraseñas, tokens) ocultarán su entrada. - **Las propiedades obligatorias** deben tener un valor para continuar. -### Revisar el resumen de configuración +#### Revisar el resumen de configuración Antes de aplicar los cambios, se mostrará un resumen completo: @@ -218,7 +308,7 @@ Antes de aplicar los cambios, se mostrará un resumen completo: - [X] Las credenciales de GitHub/Nexus están configuradas correctamente. - [X] El nombre de contexto de la aplicación es el deseado. -### Completar la instalación +#### Completar la instalación Después de confirmar la configuración: @@ -261,16 +351,13 @@ Complete el proceso de instalación: ./gradlew install smartbuild ``` -### Acceder a su instalación +#### Acceder a su instalación Abra el navegador y navegue a: - **Instalación estándar**: `https:///` - **Desarrollo local**: `http://localhost:8080/etendo` - -## Características avanzadas - ### Volver a ejecutar la configuración interactiva Es posible ejecutar la configuración interactiva de nuevo en cualquier momento: @@ -300,4 +387,5 @@ Si su proyecto incluye módulos personalizados con un archivo `config.gradle`, s Visite la [Guía del desarrollador](../developer-guide/etendo-classic/developer-tools/etendo-interactive-configuration.md) para obtener detalles sobre la Configuración interactiva para módulos personalizados. --- -This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. \ No newline at end of file +This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. +--- \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/analysis-tools.md b/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/analysis-tools.md index 903ff84cf8..eb874ab5c0 100644 --- a/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/analysis-tools.md +++ b/docs/es/user-guide/etendo-classic/basic-features/financial-management/accounting/analysis-tools.md @@ -187,7 +187,7 @@ En este informe, se añaden los botones **Vista**, **Exportar a PDF** y **Export :material-menu: `Aplicación` > `Gestión Financiera` > `Contabilidad` > `Herramientas de análisis` > `Balance sumas y saldos` - + !!! info Para poder incluir esta funcionalidad, debe estar instalado el Financial Extensions Bundle. Para ello, siga las instrucciones del marketplace: [Financial Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=9876ABEF90CC4ABABFC399544AC14558){target="_blank"}. Para más información sobre las versiones disponibles, compatibilidad con el core y nuevas funcionalidades, visite [Financial Extensions - Notas de la versión](../../../../../whats-new/release-notes/etendo-classic/bundles/financial-extensions/release-notes.md). @@ -341,7 +341,7 @@ El informe de Libro mayor también puede visualizarse y guardarse en formato Exc :material-menu: `Aplicación` > `Gestión Financiera` > `Contabilidad` > `Herramientas de análisis` > `Libro mayor avanzado` - + !!! info Para poder incluir esta funcionalidad, debe estar instalado el Financial Extensions Bundle. Para ello, siga las instrucciones del marketplace: [Financial Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=9876ABEF90CC4ABABFC399544AC14558){target="_blank"}. Para más información sobre las versiones disponibles, compatibilidad con el core y nuevas funcionalidades, visite [Financial Extensions - Notas de la versión](../../../../../whats-new/release-notes/etendo-classic/bundles/financial-extensions/release-notes.md). @@ -441,7 +441,7 @@ Por último, y del mismo modo que para el resto de informes financieros, el Diar :material-menu: `Aplicación` > `Gestión Financiera` > `Contabilidad` > `Herramientas de análisis` > `Diario asientos avanzado` - + !!! info Para poder incluir esta funcionalidad, debe estar instalado el Financial Extensions Bundle. Para ello, siga las instrucciones del marketplace: [Financial Extensions Bundle](https://marketplace.etendo.cloud/#/product-details?module=9876ABEF90CC4ABABFC399544AC14558){target="_blank"}. Para más información sobre las versiones disponibles, la compatibilidad con el core y las nuevas funcionalidades, visite [Financial Extensions - Notas de la versión](../../../../../whats-new/release-notes/etendo-classic/bundles/financial-extensions/release-notes.md). diff --git a/docs/es/user-guide/etendo-classic/basic-features/financial-management/getting-started.md b/docs/es/user-guide/etendo-classic/basic-features/financial-management/getting-started.md index 51b9ca5f9f..589dc6980b 100644 --- a/docs/es/user-guide/etendo-classic/basic-features/financial-management/getting-started.md +++ b/docs/es/user-guide/etendo-classic/basic-features/financial-management/getting-started.md @@ -223,7 +223,7 @@ Dicho esto, la configuración contable detallada en esta sección es la requerid - y un Calendario anual y periodos Obviamente, estos tipos de organización permiten contabilizar transacciones en el libro mayor. -El resto de tipos de Organización se comportan tal y como se explica en la sección [Crear organización](../general-setup/enterprise-model/initial-organization-setup.md) y en la sección [Organización](../general-setup/enterprise-model/organization.md). +El resto de tipos de Organización se comporta tal y como se explica en la sección [Crear organización](../general-setup/enterprise-model/initial-organization-setup.md) y en la sección [Organización](../general-setup/enterprise-model/organization.md). Muy brevemente: diff --git a/docs/es/user-guide/etendo-classic/optional-features/bundles/financial-extensions/overview.md b/docs/es/user-guide/etendo-classic/optional-features/bundles/financial-extensions/overview.md index 70c805b42f..287bfdbce7 100644 --- a/docs/es/user-guide/etendo-classic/optional-features/bundles/financial-extensions/overview.md +++ b/docs/es/user-guide/etendo-classic/optional-features/bundles/financial-extensions/overview.md @@ -281,4 +281,6 @@ Esta funcionalidad permite al usuario ajustar cuentas, garantizando que el saldo --- This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. +--- + --- \ No newline at end of file diff --git a/docs/es/user-guide/etendo-classic/optional-features/bundles/sales-extensions/crm-lead-management.md b/docs/es/user-guide/etendo-classic/optional-features/bundles/sales-extensions/crm-lead-management.md index f3ffe9d74b..3642046c4f 100644 --- a/docs/es/user-guide/etendo-classic/optional-features/bundles/sales-extensions/crm-lead-management.md +++ b/docs/es/user-guide/etendo-classic/optional-features/bundles/sales-extensions/crm-lead-management.md @@ -28,7 +28,7 @@ Antes de usar el módulo, deben configurarse los siguientes datos maestros: ### Lead Status -:material-menu: `Aplicación` > `CRM` > `Lead Status` +:material-menu: `Aplicación` > `Conector CRM` > `Lead Status` Los estados que definen las etapas del pipeline comercial se pueden gestionar desde esta ventana. Se pueden añadir nuevos estados para adaptar el pipeline a las necesidades de la organización. @@ -37,7 +37,7 @@ Los estados que definen las etapas del pipeline comercial se pueden gestionar de ### Lead Source -:material-menu: `Aplicación` > `CRM` > `Lead Source` +:material-menu: `Aplicación` > `Conector CRM` > `Lead Source` Los canales de origen a través de los cuales se capturan los leads (por ejemplo, Web, Referencia, Evento, WhatsApp) se pueden gestionar desde esta ventana. Se pueden añadir nuevas fuentes según sea necesario y aparecerán como opciones en el campo **Source** del formulario de Lead. @@ -54,7 +54,7 @@ Agrupación opcional para leads. Las clasificaciones se crean desde esta ventana ## Lead Window -:material-menu: `Aplicación` > `CRM` > `Lead` +:material-menu: `Aplicación` > `Conector CRM` > `Lead` Esta es la ventana principal del módulo. Cada registro representa un prospecto comercial en el pipeline de ventas. Desde aquí, el equipo comercial puede registrar nuevos leads, seguir su progreso a través de estados, registrar tareas de seguimiento y activar la conversión a Tercero cuando el lead esté listo. diff --git a/docs/es/user-guide/etendo-mobile/getting-started.md b/docs/es/user-guide/etendo-mobile/getting-started.md index b7e1a986c7..6a05f67d0d 100644 --- a/docs/es/user-guide/etendo-mobile/getting-started.md +++ b/docs/es/user-guide/etendo-mobile/getting-started.md @@ -183,6 +183,4 @@ This work is licensed under :material-creative-commons: :fontawesome-brands-crea --- ---- - --- \ No newline at end of file diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md deleted file mode 100644 index f89657cc9e..0000000000 --- a/docs/getting-started/installation.md +++ /dev/null @@ -1,363 +0,0 @@ ---- -title: Install Etendo - -tags: - - Etendo Installation - - Installation Guide - - Docker Management - - PostgreSQL Setup - - Etendo Environment - - Install - - Etendo Install ---- - -# Install Etendo - -## Overview -This section explains how to install a new Etendo environment. It includes: - -- Tutorial about the Etendo installation. -- The steps to install Etendo. - -## Tutorial - - - -## Requirements -This section outlines the [System Requirements](../getting-started/requirements.md). - -## PostgreSQL Configuration -Check this article to configure PostgreSQL correctly: [PostgreSQL Configuration](../developer-guide/etendo-classic/getting-started/installation/postgresql-configuration.md) - -## Interactive Configuration System - -Etendo now includes an **Interactive Configuration System** that guides you through the setup process with an intuitive wizard. Instead of manually editing `gradle.properties`, you can use the interactive mode to configure your project step by step. - -**For a complete step-by-step interactive installation guide, see: [Interactive Installation Guide](interactive-installation.md)** - -## Install Etendo -=== ":material-language-java: JAR Format" - - ### Steps to Install Etendo in JAR Format - - 1. Clone Etendo Base project in a temporal directory. - - ``` bash title="Terminal" - cd /tmp - git clone https://github.com/etendosoftware/etendo_base.git EtendoERP - ``` - 2. Copy the sources in `/opt/EtendoERP` folder. - - ``` bash title="Terminal" - mv EtendoERP/* /opt/EtendoERP/ - cd /opt/EtendoERP - ``` - - 3. Modify the `gradle.properties` file with your GitHub Credentials. Create the credentials by following this [guide](../developer-guide/etendo-classic/getting-started/installation/use-of-repositories-in-etendo.md). - - ```groovy title="gradle.properties" - nexusUser= - nexusPassword= - githubUser= - githubToken=<*******> - ``` - 4. Change the `build.gradle` file, uncomment the core dependency in the dependencies section: - - ```groovy title="build.gradle" - implementation('com.etendoerp.platform:etendo-core:') - ``` - - !!! info - To know the available versions of Etendo Classic, please visit the [Release Notes](../whats-new/release-notes/etendo-classic/release-notes.md) page. - - 5. Modify the `gradle.properties` file with your environment variables, if it is necessary: - - ```groovy title="gradle.properties" - - context.name=etendo - - bbdd.sid=etendo - bbdd.port=5432 - bbdd.systemUser=postgres - bbdd.systemPassword=syspass - bbdd.user=tad - bbdd.password=tad - - org.gradle.jvmargs=-Dfile.encoding=UTF-8 - ``` - 6. Dependencies - - ``` bash title="Terminal" - ./gradlew dependencies - ``` - 7. Setup - ``` bash title="Terminal" - ./gradlew setup - ``` - 8. Installation - ``` bash title="Terminal" - ./gradlew install smartbuild - ``` - 9. Start the Tomcat, in case of Linux you can run: - ``` bash title="Terminal" - sudo /etc/init.d/tomcat start - ``` - - !!! note - If you want to run Etendo locally, go to [Run Etendo Development Environment](../developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md#run-etendo-development-environment). - - 10. Open your browser in `https:///` - -=== ":octicons-file-zip-24: Source Format" - - ### Steps to Install Etendo in Sources Format - - 1. Clone Etendo Base project in a temporal directory. - - ``` bash title="Terminal" - cd /tmp - git clone https://github.com/etendosoftware/etendo_base.git EtendoERP - ``` - - 2. Copy the sources in `/opt/EtendoERP` folder. - - ``` bash title="Terminal" - mv EtendoERP/* /opt/EtendoERP/ - cd /opt/EtendoERP - ``` - 3. Modify the `gradle.properties` file with your GitHub Credentials. Create the credentials by following this [guide](../developer-guide/etendo-classic/getting-started/installation/use-of-repositories-in-etendo.md). - - ```groovy title="gradle.properties" - nexusUser= - nexusPassword= - githubUser= - githubToken=<*******> - ``` - - 4. By default, the latest core version available will be expanded but if there is a need to change it, edit the `build.gradle` file changing the `coreVersion = "(,)"`. - - ```groovy title="build.gradle" - etendo { - coreVersion = "" - } - ``` - - !!! info - To know the available versions of Etendo Classic, please visit the [Release Notes](../whats-new/release-notes/etendo-classic/release-notes.md) page. - - 5. Expand Etendo Base - - ``` bash title="Terminal" - ./gradlew expand - ``` - 6. Modify the `gradle.properties` file with your environment variables, if it is necessary: - - ```groovy title="gradle.properties" - - context.name=etendo - - bbdd.sid=etendo - bbdd.port=5432 - bbdd.systemUser=postgres - bbdd.systemPassword=syspass - bbdd.user=tad - bbdd.password=tad - - org.gradle.jvmargs=-Dfile.encoding=UTF-8 - ``` - - 7. Setup: to apply or create the initial configurations - - ``` bash title="Terminal" - ./gradlew setup - ``` - - 8. Installation: Create the database, compile the sources and deploy to Apache Tomcat - - ``` bash title="Terminal" - ./gradlew install smartbuild - ``` - - 9. Make sure you have the following PostgreSQL configuration in your `postgresql.conf`, this file is located wherever you have postgresql installed - - ``` bash title="Terminal" - lc_numeric = 'en_US.UTF-8' - max_locks_per_transaction = 128 - ``` - - !!! note - After modifying the file restart postgresql service - - 10. Start the Tomcat, in case of Linux you can run: - - ``` bash title="Terminal" - sudo /etc/init.d/tomcat start - ``` - - !!! note - If you want to run Etendo locally, go to [Run Etendo Development Environment](../developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md#run-etendo-development-environment). - - 11. Open your browser in `https:///` - -=== ":octicons-issue-opened-24: Etendo ISO" - - - - - ### Steps to Install the Etendo ISO - - 1. Download the Etendo ISO from the [Etendo ISO - Release Notes](../whats-new/release-notes/etendo-classic/iso.md) page. - - 2. Burn the Etendo ISO image into a USB stick. It is recommended to use [balenaEtcher](https://etcher.balena.io/#download-etcher){target="_blank"} on Linux or MacOS and [Rufus](https://rufus.ie/en/){target="_blank"} on Windows. - - !!! tip - If you are installing the Etendo ISO on a virtual machine, it is recommended to use [Qemu](https://www.qemu.org/download/){target="_blank"} along with a graphical interface such as [Virt-Manager (Linux)](https://virt-manager.org/download.html){target="_blank"} or [UTM (MacOS)](https://mac.getutm.app/){target="_blank"} to easily manage your virtual environments. - - 3. Start the system using the Etendo ISO image. You will be prompted: - - - **Network Connections**: Verify that you are on a network with an internet connection and that an IP address is correctly assigned to your server. - - - **Guide Storage Configuration**: Select the disk where you want to run the installation. If you only have one disk, proceed to the next step. - - - **Storage Configuration**: Same as the previous step. - - - **Profile Setup**: Enter your name, the server's name, and the user *etendo* with the password of your choice. - - 4. Wait for the **operating system** installation and server upgrade to take place. When prompted, select **reboot now**. - - 5. After the restart, the final server configuration will begin. Wait for it to finish, and the server will be ready. - - **Steps to Install the Etendo ISO without Internet Connection** - - If you do not have an internet connection during installation, follow these additional steps: - - 1. Follow the same procedure outlined in the previous section, *Steps to Install the Etendo ISO with Internet Connection* up to the network configuration stage. - - - **Network Configuration**: In this section, if you do not have an internet connection, select **Continue without internet**. - - 2. After the operating system installation is complete, restart the server as prompted. - - 3. Log in to the server using the username and password you configured during installation. - - 4. Configure the network settings as desired to establish an internet connection. - - 5. Once connected to the internet, log in as the superuser: `sudo su`. - - 6. Begin the installation process by running the command: `etendo-install`. - - 7. After the installation is finished, the server will be ready for use. - - -=== ":material-docker: Database and Tomcat Dockerized" - - ### Steps to Install Etendo with Postgres Database and Tomcat Dockerized - - The [Docker Management](../developer-guide/etendo-classic/bundles/platform/docker-management.md) module allows for the distribution of the infrastructure needed to configure Etendo Classic within Etendo modules, which include Docker containers for each service. Specifically, the Docker Management module includes the [PostgreSQL Database Service](../developer-guide/etendo-classic/bundles/platform/docker-management.md#postgres-database-service) and the [Dockerized Tomcat Service](../developer-guide/etendo-classic/bundles/platform/dockerized-tomcat-service.md) module, which, as its name suggests, provides the Tomcat service. - These modules are part of the [Platform Extensions](../user-guide/etendo-classic/optional-features/bundles/platform-extensions/overview.md) bundle, which will be covered in this step-by-step guide on how to install them. - - !!! info - In this guide we will assume the installation of Etendo Classic in Sources format, in case you want to install it in JAR format you should consult the changes in the corresponding tab. - - 1. Clone Etendo Base project in a temporal directory. - - ```bash title="Terminal" - cd /tmp - git clone https://github.com/etendosoftware/etendo_base.git EtendoERP - ``` - 2. Copy the sources in `/opt/EtendoERP` folder. - - ```bash title="Terminal" - mv EtendoERP/* /opt/EtendoERP/ - cd /opt/EtendoERP - ``` - - 3. Modify the `gradle.properties` file with your GitHub Credentials. Create the credentials by following this [guide](../developer-guide/etendo-classic/getting-started/installation/use-of-repositories-in-etendo.md). - - ```groovy title="gradle.properties" - nexusUser= - nexusPassword= - githubUser= - githubToken=<*******> - ``` - 4. By default, the latest core version available will be expanded but if there is a need to change it, edit the `build.gradle` file changing the `coreVersion = ""`. - - ```groovy title="build.gradle" - etendo { - coreVersion = "" - } - ``` - - !!! info - To know the available versions,, please visit the Etendo Classic [Release Notes](../whats-new/release-notes/etendo-classic/release-notes.md) page. - - 5. Expand Etendo Classic - - ``` bash title="Terminal" - ./gradlew expand - ``` - - 6. Add Platform Extensions bundle dependency, to include the dockeridez platform features - - ```groovy title="build.gradle" - dependencies { - //Add other dependencies bellow - implementation ('com.etendoerp:platform.extensions:2.6.0') // version 2.6.0 or later - } - ``` - 7. Modify the `gradle.properties` file with your environment variables - - ```groovy title="gradle.properties" - - context.name=etendo - - bbdd.sid=etendo - bbdd.port=5434 - bbdd.systemUser=postgres - bbdd.systemPassword=syspass - bbdd.user=tad - bbdd.password=tad - - org.gradle.jvmargs=-Dfile.encoding=UTF-8 - - docker_com.etendoerp.tomcat=true - docker_com.etendoerp.docker_db=true - ``` - - !!! info - The dockerized database service will run on the port defined in the `bbdd.port` variable, we suggest using port `5434` to avoid conflict if you have a local Postgres instance using the default port. - - By default the Tomcat service will be up on port `8080`, in case that port is busy you can use the variable `tomcat.port=`. - - - 8. Launching Dockerized Tomcat and Database services - - ``` bash title="Terminal" - ./gradlew resources.up - ``` -
- ![tomcat-database-dockerized](../assets/getting-started/installation/tomcat-database-dockerized.png) -
Postgres database and Tomcat service running dockerized, if necessary you can access the log of each service.
-
- - - 9. Setup: to apply or create the initial configurations - - ``` bash title="Terminal" - ./gradlew setup - ``` - - 10. Installation: Create the database, compile the sources and deploy to Apache Tomcat - - ``` bash title="Terminal" - ./gradlew install smartbuild - ``` - - 11. After the smartbuild task finish, the Tomacat service will automatically restart, open your browser in: - - `https:///` or in case that you run in local environment [`http://localhost:8080/etendo`](http://localhost:8080/etendo){target="_blank"} - - ---- -This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. - - diff --git a/docs/getting-started/interactive-installation.md b/docs/getting-started/interactive-installation.md deleted file mode 100644 index 2a89101cda..0000000000 --- a/docs/getting-started/interactive-installation.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -title: Install Etendo - Interactive Guide - -tags: - - Etendo Installation - - Installation Guide - - Docker Management - - PostgreSQL Setup - - Etendo Environment - - Install - - Interactive Installation - -status: beta ---- -# Install Etendo - Interactive Guide - -## Overview - -!!! example "IMPORTANT: THIS IS A BETA VERSION" - It is under active development and may contain **unstable or incomplete features**. Use it **at your own risk**. The module behavior may change without notice. Do not use it in production environments. - -Use the Interactive Configuration System to install and configure Etendo. The assistant walks you through each setting, applies safe defaults, and performs changes only after you confirm them. - -Key benefits: - -- Step-by-step guidance with inline help for every property. -- Sensitive input (passwords, tokens) is detected and hidden. -- Settings are grouped by category (Database, Security, Application, etc.). -- Built-in validation and a confirmation step before applying changes. -- Automatic backups of existing configuration files before updates. -- Faster, less error-prone setup compared to manual editing. - -## Requirements - -Before starting, it is necessary to have: - -- [System requirements](../getting-started/requirements.md). -- [PostgreSQL properly configured](../developer-guide/etendo-classic/getting-started/installation/postgresql-configuration.md). -- GitHub credentials ready. Get access to the [Use of Repositories in Etendo - Developer Guide](../developer-guide/etendo-classic/getting-started/installation/use-of-repositories-in-etendo.md). - - - - -- Etendo Gradle Plugin [2.1.0](../whats-new/release-notes/etendo-classic/plugins/etendo-gradle-plugin/release-notes.md) or higher. For more information, visit [Etendo Gradle Plugin](../developer-guide/etendo-classic/developer-tools/etendo-gradle-plugin.md). - -## Interactive Installation Process - -### Prepare the Environment - -Choose the installation format and prepare the base files: - - -=== ":octicons-file-zip-24: Source Format" - - 1. Clone Etendo Base project in `/opt` directory: - ```bash title="Terminal" - cd /opt/ - git clone https://github.com/etendosoftware/etendo_base.git EtendoERP - ``` - - 2. Move to the installation directory: - ```bash title="Terminal" - cd /opt/EtendoERP - ``` - - 3. Add GitHub credentials to `gradle.properties` file: - ```groovy title="gradle.properties" - githubUser= - githubToken=<*******> - ``` - - 4. Expand Etendo Base: - ```bash title="Terminal" - ./gradlew expand - ``` -=== ":material-language-java: JAR Format" - - 1. Clone Etendo Base project in `/opt` directory: - ```bash title="Terminal" - cd /opt/ - git clone https://github.com/etendosoftware/etendo_base.git EtendoERP - ``` - - 2. Move to the installation directory: - ```bash title="Terminal" - cd /opt/EtendoERP - ``` - - 3. Add GitHub credentials to `gradle.properties` file: - ```groovy title="gradle.properties" - githubUser= - githubToken=<*******> - ``` - - 4. Uncomment the core dependency in `build.gradle`: - ```groovy title="build.gradle" - implementation('com.etendoerp.platform:etendo-core:') - ``` - -=== ":material-docker: Docker Format" - - 1. Clone Etendo Base project in `/opt` directory: - ```bash title="Terminal" - cd /opt/ - git clone https://github.com/etendosoftware/etendo_base.git EtendoERP - ``` - - 2. Move to the installation directory: - ```bash title="Terminal" - cd /opt/EtendoERP - ``` - - 3. Add GitHub credentials to `gradle.properties` file: - ```groovy title="gradle.properties" - githubUser= - githubToken=<*******> - ``` - 4. Add Platform Extensions bundle dependency: - ```groovy title="build.gradle" - dependencies { - implementation ('com.etendoerp:platform.extensions:2.6.0') // 2.6.0 or higher. - } - ``` - - 5. Expand Etendo Base: - ```bash title="Terminal" - ./gradlew expand - ``` - -### Start Interactive Configuration - -Launch the interactive configuration assistant: - -```bash title="Terminal" -./gradlew setup -Pinteractive=true --console=plain -``` - -### Navigate the Configuration Menu - -It will be possible to see the main configuration menu: - -``` -🎛️ Interactive Setup - Main Menu -============================================================ - -📋 Choose configuration option: - -1️⃣ Default configuration (use current/default values) -2️⃣ Group configuration: - 📦 a. all - Configure all groups - 📋 b. Database Configuration - 📋 c. Security Settings - 📋 d. Application Settings -3️⃣ Exit without saving - -🎯 Select an option: -``` - -### Configure Properties - -When selecting a configuration group, you will be guided through each property, for example: - -``` -📋 Database Configuration -================================================== - -🔧 Property: bbdd.host - ℹ️ Database server hostname or IP address - Current value: localhost -✏️ New value: [Enter to keep current, or type new value] - -🔧 Property: bbdd.port - ℹ️ Database server port number - Current value: 5432 -✏️ New value: [Enter to keep current, or type new value] - -🔧 Property: bbdd.password - ℹ️ Database connection password - Current value: -🔐 New value (hidden): [Password input is hidden] -``` - -!!! tip "Property Configuration Tips" - - **Press Enter** to keep the current/default value. - - **Type new values** to override defaults. - - **Sensitive properties** (passwords, tokens) will hide your input. - - **Required properties** must have a value to proceed. - -### Review Configuration Summary - -Before applying changes, a complete summary will be shown: - -``` -📊 Configuration Summary -============================================================ - -📋 Database Configuration: - 🔧 bbdd.host = localhost - 🔧 bbdd.port = 5432 - 🔧 bbdd.password = ******** - -📋 Security Settings: - 🔧 githubToken = ******** - 🔧 nexusPassword = ******** - -📋 Application Settings: - 🔧 context.name = etendo - -📊 Total: 6 properties configured -🔐 Including 3 sensitive properties (shown masked) - -✅ Confirm configuration? (Y/N): -``` - -**Review Checklist** - -- [X] All required properties have values. -- [X] Database connection details are correct. -- [X] GitHub/Nexus credentials are properly set. -- [X] Application context name is as desired. - -### Complete Installation - -After confirming the configuration: - -1. **Properties are saved** to `gradle.properties` (with automatic backup). -2. **Traditional setup runs** automatically. -3. **Installation continues** with the configured settings. - -Complete the installation process: - -=== ":octicons-file-zip-24: Source Format" - - ```bash title="Terminal" - # Installation - ./gradlew install smartbuild - - # Start Tomcat - sudo /etc/init.d/tomcat start - ``` - -=== ":material-language-java: JAR Format" - - ```bash title="Terminal" - # Dependencies - ./gradlew dependencies - - # Installation - ./gradlew install smartbuild - - # Start Tomcat - sudo /etc/init.d/tomcat start - ``` - -=== ":material-docker: Docker Format" - - ```bash title="Terminal" - # Launch Docker services - ./gradlew resources.up - - # Installation - ./gradlew install smartbuild - ``` - -### Access Your Installation - -Open the browser and navigate to: - -- **Standard Installation**: `https:///` -- **Local Development**: `http://localhost:8080/etendo` - - -## Advanced Features - -### Re-running Interactive Configuration - -It is possible to run the interactive configuration again at any time: - -```bash title="Terminal" -./gradlew setup -Pinteractive=true --console=plain -``` - -This will: - -- Show the current configuration values. -- Allow the user to modify any settings. -- Create new backups before applying changes. - -### Debug Mode - -For troubleshooting, enable debug output: - -```bash title="Terminal" -./gradlew setup -Pinteractive=true --debug --console=plain -``` -### Custom Modules Properties Configuration - -If your project includes custom modules with a `config.gradle` file, their configuration properties are added automatically to the interactive setup. Property names are preserved exactly as declared in `config.gradle`, and custom keys in `gradle.properties` are supported. - -!!! info - Visit the [Developer Guide](../developer-guide/etendo-classic/developer-tools/etendo-interactive-configuration.md) for details about Interactive Configuration to custom modules. - ---- -This work is licensed under :material-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: [ CC BY-SA 2.5 ES](https://creativecommons.org/licenses/by-sa/2.5/es/){target="_blank"} by [Futit Services S.L](https://etendo.software){target="_blank"}. diff --git a/docs/getting-started/overview.md b/docs/getting-started/overview.md index 97ceed6033..7d97f6deb8 100644 --- a/docs/getting-started/overview.md +++ b/docs/getting-started/overview.md @@ -99,9 +99,8 @@ Here are some of the **key benefits** of using **Etendo**: An ERP system, like **Etendo**, is more than a tool— it's a **strategic asset**. It mirrors your business operations, helps you optimize resources, and contributes to long-term success. **Understanding how it works is the first step toward harnessing its full potential**. -[:material-order-bool-ascending-variant: Requirements](../getting-started/requirements.md){ .md-button .md-button--primary .md-button .md-button--primary--primary } -[:material-tools: Install Etendo](../getting-started/installation.md){ .md-button .md-button--primary .md-button .md-button--primary--primary } -[:material-page-previous-outline: Navigating the Interface](../getting-started/user-interface/workspace.md){ .md-button .md-button--primary .md-button .md-button--primary--primary } +[:material-play-circle-outline: Try Live Demo](../live-builds/overview.md){ .md-button .md-button--primary } +[:material-page-previous-outline: Navigating the Interface](../getting-started/user-interface/workspace.md){ .md-button .md-button--primary } --- diff --git a/docs/whats-new/release-notes/etendo-classic/release-notes.md b/docs/whats-new/release-notes/etendo-classic/release-notes.md index 3e8159716d..4e1a284a01 100644 --- a/docs/whats-new/release-notes/etendo-classic/release-notes.md +++ b/docs/whats-new/release-notes/etendo-classic/release-notes.md @@ -17,7 +17,7 @@ tags: There was a significant change in the software stack between **Etendo 25** and earlier versions. For more information, visit: - - [Etendo Installation - Requirements](../../../getting-started/requirements.md#software-stack) + - [Etendo Installation - Requirements](../../../developer-guide/etendo-classic/getting-started/installation/requirements.md#software-stack) - [Developer Changelog - Stack Upgrade](../../../developer-guide/etendo-classic/developer-changelog/apichanges.md#etendo-platform-stack-upgrade) diff --git a/mkdocs.yml b/mkdocs.yml index b2f14d10ad..48196dbd25 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -128,10 +128,6 @@ plugins: - Home : index.md - Getting Started: - Overview: getting-started/overview.md - - Requirements: getting-started/requirements.md - - Install Etendo: getting-started/installation.md - - Interactive Installation: getting-started/interactive-installation.md - - Install Etendo Main UI: developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md - User interface: - Workspace: getting-started/user-interface/workspace.md - Navigation: getting-started/user-interface/navigation.md @@ -320,14 +316,14 @@ plugins: - Etendo: - ✨ Getting Started: - Installation : - - Install Etendo: getting-started/installation.md - - Install Etendo - Development Environment: developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md + - Requirements: developer-guide/etendo-classic/getting-started/installation/requirements.md + - Install Etendo - Local Development Environment: developer-guide/etendo-classic/getting-started/installation/local-development.md + - Install Etendo - Server Installation: developer-guide/etendo-classic/getting-started/installation/production-server.md + - PostgreSQL Configuration: developer-guide/etendo-classic/getting-started/installation/postgresql-configuration.md - Use of Repositories in Etendo: developer-guide/etendo-classic/getting-started/installation/use-of-repositories-in-etendo.md - Install Modules in Etendo: developer-guide/etendo-classic/getting-started/installation/install-modules-in-etendo.md - Install Translation Bundles in Etendo: developer-guide/etendo-classic/getting-started/installation/install-translation-bundles-in-etendo.md - - Install Etendo Main UI: developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md - IntelliJ Code Formatting: developer-guide/etendo-classic/getting-started/installation/intellij-code-formatting.md - - PostgreSQL Configuration: developer-guide/etendo-classic/getting-started/installation/postgresql-configuration.md - Migration from Openbravo: - Migrating to Etendo (from Openbravo): developer-guide/etendo-classic/getting-started/migration-from-openbravo/migrating-to-etendo-from-openbravo.md - Upgrading to Openbravo 21Q3.2: developer-guide/etendo-classic/getting-started/migration-from-openbravo/upgrading-to-openbravo-21q3-2.md @@ -394,6 +390,7 @@ plugins: - How to Change an Existing Window: developer-guide/etendo-classic/how-to-guides/how-to-change-an-existing-window.md - How to Change Fonts in Etendo Reports: developer-guide/etendo-classic/how-to-guides/how-to-change-fonts-in-etendo-reports.md - How to Change the Size of a Column: developer-guide/etendo-classic/how-to-guides/how-to-change-the-size-of-a-column.md + - How to Configure Etendo Main UI: developer-guide/etendo-classic/how-to-guides/how-to-configure-etendo-main-ui.md - How to Configure Log: developer-guide/etendo-classic/how-to-guides/how-to-configure-log.md - How to Configure Session Timeout: developer-guide/etendo-classic/how-to-guides/how-to-configure-session-timeout.md - How to Copy and Paste Images in Etendo: developer-guide/etendo-classic/how-to-guides/how-to-copy-and-paste-images-in-etendo.md @@ -466,6 +463,8 @@ plugins: - How to Retrieve Parents Node by Level in a Tree: developer-guide/etendo-classic/how-to-guides/how-to-retrieve-parents-node-by-level-in-a-tree.md - How to Run an Initial Client Setup Process: developer-guide/etendo-classic/how-to-guides/how-to-run-an-initial-client-setup-process.md - How to Send Emails on Events: developer-guide/etendo-classic/how-to-guides/how-to-send-emails-on-events.md + - How to Use Setup Apply Templates: developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md + - How to Use the Interactive Setup: developer-guide/etendo-classic/how-to-guides/how-to-use-interactive-setup.md # - How to Setup ESLint And Prettier In Your IDE: developer-guide/etendo-classic/how-to-guides/How_To_Setup_ESLint_And_Prettier_In_Your_IDE.md # - How to setup Visual Studio Code IDE: developer-guide/etendo-classic/how-to-guides/How_to_setup_Visual_Studio_Code_IDE.md # - How to Upgrade a Library: developer-guide/etendo-classic/how-to-guides/How_To_Upgrade_a_Library.md @@ -736,6 +735,7 @@ plugins: How to Change the Size of a Column: Cómo Cambiar el Tamaño de una Columna How to Configure API Tokens: Cómo Configurar Tokens de API How to Configure Etendo Copilot to Use a Proxy: Cómo Configurar Etendo Copilot para Usar un Proxy + How to Configure Etendo Main UI: Cómo Configurar Etendo Main UI How to Configure Log: Cómo Configurar el Log How to Configure MCP Servers on a Etendo Agent: Cómo Configurar Servidores MCP en un Agente de Etendo How to Configure Memory Limits in Docker Containers: Cómo Configurar Límites de Memoria en Contenedores Docker @@ -846,15 +846,20 @@ plugins: How to Use OpenTelemetry: Cómo Usar OpenTelemetry How to Use Property Fields: Cómo Usar Campos de Propiedad How to Use Secure Web Services: Cómo Usar Servicios Web Seguros + How to Use Setup Apply Templates: Cómo Usar Setup Apply Templates + How to Use the Interactive Setup: Cómo Usar la Configuración Interactiva Initial Organization Setup: Crear organización Install Etendo: Instalar Etendo Install Etendo - Development Environment: Instalar Etendo - Entorno de Desarrollo + Install Etendo - Local Development Environment: Instalar Etendo - Entorno de Desarrollo Local + Install Etendo - Server Installation: Instalar Etendo - Instalación en Servidor Install Etendo Main UI: Instalar Etendo Main UI Install Modules in Etendo: Instalar Módulos en Etendo Install Translation Bundles in Etendo: Instalar Paquetes de Traducción en Etendo Installation: Instalación IntelliJ Code Formatting: Formateo de Código en IntelliJ - Interactive Installation: Instalación Interactiva + Quick Installation: Instalación Rápida + Interactive Setup: Configuración Interactiva Intercompany: Intercompañía Inventory Status: Estado de Inventario ISO image: Imagen ISO @@ -1029,10 +1034,6 @@ nav: - Home : index.md - Getting Started: - Overview: getting-started/overview.md - - Requirements: getting-started/requirements.md - - Install Etendo: getting-started/installation.md - - Interactive Installation: getting-started/interactive-installation.md - - Install Etendo Main UI: developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md - User interface: - Workspace: getting-started/user-interface/workspace.md - Navigation: getting-started/user-interface/navigation.md @@ -1207,14 +1208,14 @@ nav: - Etendo: - ✨ Getting Started: - Installation : - - Install Etendo: getting-started/installation.md - - Install Etendo - Development Environment: developer-guide/etendo-classic/getting-started/installation/install-etendo-development-environment.md + - Requirements: developer-guide/etendo-classic/getting-started/installation/requirements.md + - Install Etendo - Local Development Environment: developer-guide/etendo-classic/getting-started/installation/local-development.md + - Install Etendo - Server Installation: developer-guide/etendo-classic/getting-started/installation/production-server.md + - PostgreSQL Configuration: developer-guide/etendo-classic/getting-started/installation/postgresql-configuration.md - Use of Repositories in Etendo: developer-guide/etendo-classic/getting-started/installation/use-of-repositories-in-etendo.md - Install Modules in Etendo: developer-guide/etendo-classic/getting-started/installation/install-modules-in-etendo.md - Install Translation Bundles in Etendo: developer-guide/etendo-classic/getting-started/installation/install-translation-bundles-in-etendo.md - - Install Etendo Main UI: developer-guide/etendo-classic/getting-started/installation/install-etendo-main-ui.md - IntelliJ Code Formatting: developer-guide/etendo-classic/getting-started/installation/intellij-code-formatting.md - - PostgreSQL Configuration: developer-guide/etendo-classic/getting-started/installation/postgresql-configuration.md - Migration from Openbravo: - Migrating to Etendo (from Openbravo): developer-guide/etendo-classic/getting-started/migration-from-openbravo/migrating-to-etendo-from-openbravo.md - Upgrading to Openbravo 21Q3.2: developer-guide/etendo-classic/getting-started/migration-from-openbravo/upgrading-to-openbravo-21q3-2.md @@ -1281,6 +1282,7 @@ nav: - How to Change an Existing Window: developer-guide/etendo-classic/how-to-guides/how-to-change-an-existing-window.md - How to Change Fonts in Etendo Reports: developer-guide/etendo-classic/how-to-guides/how-to-change-fonts-in-etendo-reports.md - How to Change the Size of a Column: developer-guide/etendo-classic/how-to-guides/how-to-change-the-size-of-a-column.md + - How to Configure Etendo Main UI: developer-guide/etendo-classic/how-to-guides/how-to-configure-etendo-main-ui.md - How to Configure Log: developer-guide/etendo-classic/how-to-guides/how-to-configure-log.md - How to Configure Session Timeout: developer-guide/etendo-classic/how-to-guides/how-to-configure-session-timeout.md - How to Copy and Paste Images in Etendo: developer-guide/etendo-classic/how-to-guides/how-to-copy-and-paste-images-in-etendo.md @@ -1353,6 +1355,8 @@ nav: - How to Retrieve Parents Node by Level in a Tree: developer-guide/etendo-classic/how-to-guides/how-to-retrieve-parents-node-by-level-in-a-tree.md - How to Run an Initial Client Setup Process: developer-guide/etendo-classic/how-to-guides/how-to-run-an-initial-client-setup-process.md - How to Send Emails on Events: developer-guide/etendo-classic/how-to-guides/how-to-send-emails-on-events.md + - How to Use Setup Apply Templates: developer-guide/etendo-classic/how-to-guides/how-to-use-setup-apply-templates.md + - How to Use the Interactive Setup: developer-guide/etendo-classic/how-to-guides/how-to-use-interactive-setup.md # - How to Setup ESLint And Prettier In Your IDE: developer-guide/etendo-classic/how-to-guides/How_To_Setup_ESLint_And_Prettier_In_Your_IDE.md # - How to setup Visual Studio Code IDE: developer-guide/etendo-classic/how-to-guides/How_to_setup_Visual_Studio_Code_IDE.md # - How to Upgrade a Library: developer-guide/etendo-classic/how-to-guides/How_To_Upgrade_a_Library.md