diff --git a/.vscode/launch.json b/.vscode/launch.json index 44cf75e1..1c27231c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,5 +1,5 @@ { - "version": "0.6.1", + "version": "0.6.2", "configurations": [ { "name": "WEB: Vite (Chrome)", diff --git a/apps/server/package.json b/apps/server/package.json index e330c8db..e745ec48 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,6 +1,6 @@ { "name": "@erp/factuges-server", - "version": "0.6.1", + "version": "0.6.2", "private": true, "scripts": { "build": "tsup src/index.ts --config tsup.config.ts", diff --git a/apps/server/tsconfig.json b/apps/server/tsconfig.json index 350a4fd7..703596eb 100644 --- a/apps/server/tsconfig.json +++ b/apps/server/tsconfig.json @@ -5,9 +5,8 @@ "noEmit": true, "allowImportingTsExtensions": true, "lib": ["ES2022"], - "baseUrl": "./src", "paths": { - "@/*": ["*"] + "@/*": ["./src/*"] }, "outDir": "./dist", "rootDir": "./src", diff --git a/apps/web/package.json b/apps/web/package.json index ead05efd..94c8e10c 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,7 +1,7 @@ { "name": "@erp/factuges-web", "private": true, - "version": "0.6.1", + "version": "0.6.2", "type": "module", "scripts": { "dev": "vite --host --clearScreen false", diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 3acc7c41..19c9df7a 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -4,7 +4,6 @@ "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true, - "baseUrl": ".", "paths": { "@/*": ["./src/*"] } diff --git a/modules/auth/package.json b/modules/auth/package.json index 17d4b930..ce0848fe 100644 --- a/modules/auth/package.json +++ b/modules/auth/package.json @@ -1,6 +1,6 @@ { "name": "@erp/auth", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/core/package.json b/modules/core/package.json index 2fb74325..eb6c49ca 100644 --- a/modules/core/package.json +++ b/modules/core/package.json @@ -1,6 +1,6 @@ { "name": "@erp/core", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/core/tsconfig.json b/modules/core/tsconfig.json index 317a401d..0c4ef2ea 100644 --- a/modules/core/tsconfig.json +++ b/modules/core/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "@erp/core/*": ["./src/*"] }, - "baseUrl": ".", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, diff --git a/modules/customer-invoices/package.json b/modules/customer-invoices/package.json index f483ac05..2eb446f5 100644 --- a/modules/customer-invoices/package.json +++ b/modules/customer-invoices/package.json @@ -1,6 +1,6 @@ { "name": "@erp/customer-invoices", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/customer-invoices/src/api/domain/proformas/aggregates/proforma.aggregate.ts b/modules/customer-invoices/src/api/domain/proformas/aggregates/proforma.aggregate.ts index c7adc930..fad8b4e1 100644 --- a/modules/customer-invoices/src/api/domain/proformas/aggregates/proforma.aggregate.ts +++ b/modules/customer-invoices/src/api/domain/proformas/aggregates/proforma.aggregate.ts @@ -344,16 +344,16 @@ export class Proforma extends AggregateRoot implements IP ); } - const invalidItem = this.items.find((item) => !item.isValued()); + /*const invalidItem = this.items.find((item) => !item.isValued()); if (invalidItem) { return Result.fail( new DomainValidationError( "INVALID_ITEM", "items", - `Item at position ${invalidItem.id} is not valid for invoicing` + `Item with id ${invalidItem.id} is not valid for invoicing` ) ); - } + }*/ if (this.paymentMethod.isNone()) { return Result.fail( diff --git a/modules/customer-invoices/tsconfig.json b/modules/customer-invoices/tsconfig.json index 1e908d07..65a9250e 100644 --- a/modules/customer-invoices/tsconfig.json +++ b/modules/customer-invoices/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "@erp/customer-invoices/*": ["./src/*"] }, - "baseUrl": ".", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, diff --git a/modules/customers/package.json b/modules/customers/package.json index 0169409d..036d4ee6 100644 --- a/modules/customers/package.json +++ b/modules/customers/package.json @@ -1,7 +1,7 @@ { "name": "@erp/customers", "description": "Customers", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/customers/tsconfig.json b/modules/customers/tsconfig.json index 124e8e30..dcaa2f64 100644 --- a/modules/customers/tsconfig.json +++ b/modules/customers/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "@erp/customers/*": ["./src/*"] }, - "baseUrl": ".", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, diff --git a/modules/factuges/package.json b/modules/factuges/package.json index 2dae8293..003a8dae 100644 --- a/modules/factuges/package.json +++ b/modules/factuges/package.json @@ -1,6 +1,6 @@ { "name": "@erp/factuges", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/factuges/src/api/infraestructure/express/factuges.routes.ts b/modules/factuges/src/api/infraestructure/express/factuges.routes.ts index 2db61809..0c085481 100644 --- a/modules/factuges/src/api/infraestructure/express/factuges.routes.ts +++ b/modules/factuges/src/api/infraestructure/express/factuges.routes.ts @@ -1,8 +1,9 @@ import { mockUser, requireAuthenticated, requireCompanyContext } from "@erp/auth/api"; import { type RequestWithAuth, type StartParams, validateRequest } from "@erp/core/api"; +import type { IProformaPublicServices } from "@erp/customer-invoices/api"; +import type { ICustomerPublicServices } from "@erp/customers/api"; import { CreateProformaFromFactugesRequestSchema } from "@erp/factuges/common"; import { type NextFunction, type Request, type Response, Router } from "express"; -import type { IProformaPublicServices } from "node_modules/@erp/customer-invoices/src/api/application"; import type { FactugesInternalDeps } from "../di/factuges.di"; @@ -15,7 +16,7 @@ export const factugesRouter = (params: StartParams) => { const deps = getInternal("factuges"); // Recuperamos servicios externos que necesitemos - const customerServices = getService("customers:general"); + const customerServices = getService("customers:general"); const proformaServices = getService("customer-invoices:proformas"); const publicServices = { diff --git a/modules/factuges/tsconfig.json b/modules/factuges/tsconfig.json index 70ef7142..76415a29 100644 --- a/modules/factuges/tsconfig.json +++ b/modules/factuges/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "@erp/factuges/*": ["./src/*"] }, - "baseUrl": ".", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, diff --git a/modules/supplier-invoices/package.json b/modules/supplier-invoices/package.json index 9d78a427..14f87618 100644 --- a/modules/supplier-invoices/package.json +++ b/modules/supplier-invoices/package.json @@ -1,7 +1,7 @@ { "name": "@erp/supplier-invoices", "description": "Supplier invoices", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/supplier-invoices/tsconfig.json b/modules/supplier-invoices/tsconfig.json index 717814f1..271c02d4 100644 --- a/modules/supplier-invoices/tsconfig.json +++ b/modules/supplier-invoices/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "@erp/supplier-invoices/*": ["./src/*"] }, - "baseUrl": ".", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, diff --git a/modules/supplier/package.json b/modules/supplier/package.json index 2f7e1775..8a0cf9e6 100644 --- a/modules/supplier/package.json +++ b/modules/supplier/package.json @@ -1,7 +1,7 @@ { "name": "@erp/suppliers", "description": "Suppliers", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/modules/supplier/tsconfig.json b/modules/supplier/tsconfig.json index 7e27fb6a..a055379d 100644 --- a/modules/supplier/tsconfig.json +++ b/modules/supplier/tsconfig.json @@ -4,7 +4,7 @@ "paths": { "@erp/suppliers/*": ["./src/*"] }, - "baseUrl": ".", + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2022", "useDefineForClassFields": true, diff --git a/package.json b/package.json index a9dd5266..ab491d4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "uecko-erp-2025", "private": true, + "version": "0.6.2", "workspaces": [ "apps/*", "modules/*", diff --git a/packages/rdx-criteria/package.json b/packages/rdx-criteria/package.json index 35b66261..858b72d3 100644 --- a/packages/rdx-criteria/package.json +++ b/packages/rdx-criteria/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-criteria", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-ddd/package.json b/packages/rdx-ddd/package.json index 9cc41cb8..08ad5d08 100644 --- a/packages/rdx-ddd/package.json +++ b/packages/rdx-ddd/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-ddd", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-logger/package.json b/packages/rdx-logger/package.json index cd3bccad..f6bd1e99 100644 --- a/packages/rdx-logger/package.json +++ b/packages/rdx-logger/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-logger", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/rdx-ui/tsconfig.json b/packages/rdx-ui/tsconfig.json index bd86d0df..466f5d9a 100644 --- a/packages/rdx-ui/tsconfig.json +++ b/packages/rdx-ui/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "@repo/typescript-config/react-library.json", "compilerOptions": { - "baseUrl": ".", "paths": { "@repo/rdx-ui/*": ["./src/*"] }, diff --git a/packages/rdx-utils/package.json b/packages/rdx-utils/package.json index 0aeb287a..b2872413 100644 --- a/packages/rdx-utils/package.json +++ b/packages/rdx-utils/package.json @@ -1,6 +1,6 @@ { "name": "@repo/rdx-utils", - "version": "0.6.1", + "version": "0.6.2", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/typescript-config/root.json b/packages/typescript-config/root.json index b5c368af..232a1b3c 100644 --- a/packages/typescript-config/root.json +++ b/packages/typescript-config/root.json @@ -2,7 +2,6 @@ "$schema": "https://json.schemastore.org/tsconfig", "display": "Root", "compilerOptions": { - "baseUrl": ".", "paths": { "@erp/core/*": [ "modules/core/src/*" diff --git a/scripts/docker-compose.rodax.yml b/scripts/docker-compose.rodax.yml new file mode 100644 index 00000000..e9bffc2e --- /dev/null +++ b/scripts/docker-compose.rodax.yml @@ -0,0 +1,270 @@ +name: factuges-rodax + +services: + # --- Base de datos MariaDB --- + db: + image: mariadb:lts-noble + container_name: factuges_rodax_db + restart: unless-stopped + environment: + MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASS} + MARIADB_USER: ${DB_USER} + MARIADB_PASSWORD: ${DB_PASS} + MARIADB_DATABASE: ${DB_NAME} + volumes: + - ./volumes/db_data:/var/lib/mysql + networks: + - internal + - edge + ports: + - "3306:3306" + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 20s + timeout: 5s + retries: 10 + + phpmyadmin: + image: phpmyadmin/phpmyadmin + container_name: factuges_rodax_phpmyadmin + restart: unless-stopped + environment: + PMA_ARBITRARY: 1 + PMA_ABSOLUTE_URI: https://factuges.rodax-software.local/phpmyadmin/ + PMA_HOST: db + PMA_USER: ${DB_USER} + PMA_PASSWORD: ${DB_PASS} + PMA_VERBOSES: "FactuGES Rodax" + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS} + UPLOAD_LIMIT: 64M + depends_on: + db: + condition: service_healthy + networks: + - internal + - edge + ports: + - "8080:8080" + labels: + traefik.enable: "true" + + # /phpmyadmin → phpMyAdmin + traefik.http.routers.factuges_rodax_phpmyadmin.rule: "Host(`factuges.rodax-software.local`) && PathPrefix(`/phpmyadmin/`)" + traefik.http.routers.factuges_rodax_phpmyadmin.entrypoints: "websecure" + traefik.http.routers.factuges_rodax_phpmyadmin.tls: "true" + traefik.http.routers.factuges_rodax_phpmyadmin.priority: "110" + traefik.http.routers.factuges_rodax_phpmyadmin.service: "factuges_rodax_phpmyadmin" + traefik.http.services.factuges_rodax_phpmyadmin.loadbalancer.server.port: "80" + + # strip /phpmyadmin del path antes de llegar al contenedor + traefik.http.middlewares.factuges_rodax_phpmyadmin_strip.stripprefix.prefixes: "/phpmyadmin/" + + # whitelist a tu IP + #traefik.http.middlewares.factuges_rodax_phpmyadmin_ipwhitelist.ipwhitelist.sourcerange: "192.168.0.0/24" + + # encadenar middlewares + traefik.http.routers.factuges_rodax_phpmyadmin.middlewares: "factuges_rodax_phpmyadmin_strip" + + + # --- API --- + api: + image: ${API_IMAGE} + container_name: factuges_rodax_api + restart: unless-stopped + depends_on: + db: + condition: service_healthy + environment: + NODE_ENV: production + COMPANY_SLUG: ${COMPANY_SLUG} + FRONTEND_URL: ${FRONTEND_URL} + PORT: ${PORT} + API_BASE_PATH: ${API_BASE_PATH} + + JWT_SECRET: ${JWT_SECRET} + JWT_ACCESS_EXPIRATION: ${JWT_ACCESS_EXPIRATION} + JWT_REFRESH_EXPIRATION: ${JWT_REFRESH_EXPIRATION} + + WARMUP_TIMEOUT_MS: ${WARMUP_TIMEOUT_MS} + WARMUP_STRICT: ${WARMUP_STRICT} + + DB_HOST: "db" + DB_PORT: ${DB_PORT} + DB_DIALECT: ${DB_DIALECT} + DB_NAME: ${DB_NAME} + DB_USER: ${DB_USER} + DB_PASS: ${DB_PASS} + DB_LOGGING: ${DB_LOGGING} + DB_SSL: ${DB_SSL} + DB_SYNC_MODE: ${DB_SYNC_MODE} + + TEMPLATES_PATH: ${TEMPLATES_PATH} + + FASTREPORT_BIN: ${FASTREPORT_BIN} + DOCUMENTS_PATH: ${DOCUMENTS_PATH} + + SIGNED_DOCUMENTS_PATH: ${SIGNED_DOCUMENTS_PATH} + + SIGNING_SERVICE_URL: ${SIGNING_SERVICE_URL} + SIGNING_SERVICE_METHOD: ${SIGNING_SERVICE_METHOD} + SIGNING_SERVICE_TIMEOUT_MS: ${SIGNING_SERVICE_TIMEOUT_MS} + SIGNING_SERVICE_MAX_RETRIES: ${SIGNING_SERVICE_MAX_RETRIES} + + COMPANY_CERTIFICATES_PATH: ${COMPANY_CERTIFICATES_PATH} + + volumes: + - ./volumes/templates:/shared/templates:ro + - ./volumes/certificates:/shared/certificates:rw + - ./volumes/documents:/shared/documents:rw + networks: + - internal + - edge + labels: + traefik.enable: "true" + + # /api → backend + traefik.http.routers.factuges_rodax_api.rule: "Host(`factuges.rodax-software.local`) && PathPrefix(`/api`)" + traefik.http.routers.factuges_rodax_api.entrypoints: "websecure" + traefik.http.routers.factuges_rodax_api.tls: "true" + + traefik.http.routers.factuges_rodax_api.priority: "100" + traefik.http.routers.factuges_rodax_api.service: "factuges_rodax_api" + + # Servicio + traefik.http.services.factuges_rodax_api.loadbalancer.server.port: "${API_PORT:-3002}" + + # --- Web estática (React compilado) --- + web: + image: nginx:alpine + container_name: factuges_rodax_web + restart: unless-stopped + depends_on: + - api + environment: + VITE_API_SERVER_URL: https://factuges.rodax-software.local/api/v1 + volumes: + # Build de Vite (en el host) -> Nginx + - ./web/latest/dist:/usr/share/nginx/html:ro + # Config de Nginx con try_files para SPA + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + networks: + - edge + labels: + traefik.enable: "true" + + # Router HTTPS + traefik.http.routers.factuges_rodax_web.rule: "Host(`factuges.rodax-software.local`)" + traefik.http.routers.factuges_rodax_web.entrypoints: "websecure" + traefik.http.routers.factuges_rodax_web.tls: "true" + + # Servicio + traefik.http.services.factuges_rodax_web.loadbalancer.server.port: "80" + + + factuges_sync: + image: "factuges-sync-factuges:rodax-latest" + container_name: "factuges_rodax_sync_factuges" + restart: "no" + environment: + ENV: "production" + LOCAL_TZ: "Europe/Madrid" + STATE_PATH: "${STATE_PATH}" + + FACTUGES_HOST: "${FACTUGES_HOST}" + FACTUGES_PORT: "${FACTUGES_PORT}" + FACTUGES_DATABASE: "${FACTUGES_DATABASE}" + FACTUGES_USER: "${FACTUGES_USER}" + FACTUGES_PASSWORD: "${FACTUGES_PASSWORD}" + + FWEB_MYSQL_HOST: "db" + FWEB_MYSQL_PORT: "${DB_PORT}" + FWEB_MYSQL_DATABASE: "${DB_NAME}" + FWEB_MYSQL_USER: "${DB_USER}" + FWEB_MYSQL_PASSWORD: "${DB_PASS}" + FWEB_API_URL: "${FWEB_API_URL}" + FWEB_API_KEY: "${FWEB_API_KEY}" + FWEB_API_TIMEOUT: "${FWEB_API_TIMEOUT}" + + CTE_COMPANY_ID: "${CTE_COMPANY_ID}" + CTE_SERIE: "${CTE_SERIE}" + CTE_STATUS_INVOICE: "${CTE_STATUS_INVOICE}" + CTE_IS_PROFORMA: "${CTE_IS_PROFORMA}" + CTE_STATUS_VERIFACTU: "${CTE_STATUS_VERIFACTU}" + CTE_LANGUAGE_CODE: "${CTE_LANGUAGE_CODE}" + CTE_COUNTRY_CODE: "${CTE_COUNTRY_CODE}" + CTE_IS_COMPANY: "${CTE_IS_COMPANY}" + CTE_SYNC_RESULT_OK: "${CTE_SYNC_RESULT_OK}" + CTE_SYNC_RESULT_FAIL: "${CTE_SYNC_RESULT_FAIL}" + + VERIFACTU_API_KEY: "${VERIFACTU_API_KEY}" + VERIFACTU_BASE_URL: "${VERIFACTU_BASE_URL}" + VERIFACTU_NIFS_API_KEY: "${VERIFACTU_NIFS_API_KEY}" + depends_on: + db: + condition: service_healthy + networks: + - internal + - edge + volumes: + - ./volumes/db_sync:/app/rodax + + + verifactu_sync: + image: "factuges-sync-verifactu:rodax-latest" + container_name: "factuges_rodax_sync_verifactu" + restart: "no" + environment: + ENV: "production" + LOCAL_TZ: "Europe/Madrid" + STATE_PATH: "${STATE_PATH}" + + FACTUGES_HOST: "${FACTUGES_HOST}" + FACTUGES_PORT: "${FACTUGES_PORT}" + FACTUGES_DATABASE: "${FACTUGES_DATABASE}" + FACTUGES_USER: "${FACTUGES_USER}" + FACTUGES_PASSWORD: "${FACTUGES_PASSWORD}" + + FWEB_MYSQL_HOST: "db" + FWEB_MYSQL_PORT: "${DB_PORT}" + FWEB_MYSQL_DATABASE: "${DB_NAME}" + FWEB_MYSQL_USER: "${DB_USER}" + FWEB_MYSQL_PASSWORD: "${DB_PASS}" + FWEB_API_URL: "${FWEB_API_URL}" + FWEB_API_KEY: "${FWEB_API_KEY}" + FWEB_API_TIMEOUT: "${FWEB_API_TIMEOUT}" + + CTE_COMPANY_ID: "${CTE_COMPANY_ID}" + CTE_SERIE: "${CTE_SERIE}" + CTE_STATUS_INVOICE: "${CTE_STATUS_INVOICE}" + CTE_IS_PROFORMA: "${CTE_IS_PROFORMA}" + CTE_STATUS_VERIFACTU: "${CTE_STATUS_VERIFACTU}" + CTE_LANGUAGE_CODE: "${CTE_LANGUAGE_CODE}" + CTE_COUNTRY_CODE: "${CTE_COUNTRY_CODE}" + CTE_IS_COMPANY: "${CTE_IS_COMPANY}" + CTE_SYNC_RESULT_OK: "${CTE_SYNC_RESULT_OK}" + CTE_SYNC_RESULT_FAIL: "${CTE_SYNC_RESULT_FAIL}" + + VERIFACTU_API_KEY: "${VERIFACTU_API_KEY}" + VERIFACTU_BASE_URL: "${VERIFACTU_BASE_URL}" + VERIFACTU_NIFS_API_KEY: "${VERIFACTU_NIFS_API_KEY}" + depends_on: + db: + condition: service_healthy + networks: + - internal + - edge + volumes: + - ./volumes/db_sync:/app/rodax + +networks: + edge: + name: edge + external: true + internal: + name: factuges_rodax_internal + external: false + + +volumes: + # Solo declarativo; usamos ruta ./volumes/db_data arriba + db_data: diff --git a/scripts/stack.env b/scripts/stack.env deleted file mode 100644 index 3b809dfe..00000000 --- a/scripts/stack.env +++ /dev/null @@ -1,14 +0,0 @@ -COMPANY=rodax -DOMAIN=rodax.factuges.rodax-software.local -FRONTEND_URL=rodax.factuges.rodax-software.local -WEB_VERSION=v0.0.4-latest -API_IMAGE=factuges-server:rodax-latest -API_PORT=3002 -DB_HOST=db -DB_DIALECT=mysql -DB_PORT=3306 -DB_USER=rodax_usr -DB_PASS=supersecret -DB_NAME=rodax_db -DB_ROOT_PASS=verysecret -TRAEFIK_ENTRYPOINT=web \ No newline at end of file diff --git a/scripts/stack.rodax.env b/scripts/stack.rodax.env new file mode 100644 index 00000000..92de6050 --- /dev/null +++ b/scripts/stack.rodax.env @@ -0,0 +1,91 @@ +# Identidad de la compañía +COMPANY_SLUG=rodax + +# Dominios +DOMAIN=factuges.rodax-software.local + +# API +PORT=3002 +API_BASE_PATH=/api/v1 +FRONTEND_URL=https://factuges.rodax-software.local +TRUST_PROXY=0 +TIMEZONE=Europe/Madrid +API_IMAGE=factuges-server:rodax-latest + +JWT_SECRET=supersecretkeysupersecretkeysupersecretkey +JWT_ACCESS_EXPIRATION=1h +JWT_REFRESH_EXPIRATION=7d + +WARMUP_TIMEOUT_MS=10000 +WARMUP_STRICT=false + + +# MariaDB +# DB_HOST=db +DB_PORT=3306 +DB_DIALECT=mysql +DB_NAME=rodax_db +DB_USER=rodax_usr +DB_PASS=supersecret +DB_ROOT_PASS=verysecret + +DB_LOGGING=true +DB_SSL=false +DB_SYNC_MODE=none + + +# Plantillas +TEMPLATES_PATH=/shared/templates + +# Documentos generados +FASTREPORT_BIN=/repo/tools/FastReportCliGenerator +DOCUMENTS_PATH=/shared/documents + +# Firma de documentos +SIGNED_DOCUMENTS_PATH=/shared/documents + +SIGNING_SERVICE_URL=http://signing-service:8000/documents/sign +SIGNING_SERVICE_METHOD=POST +SIGNING_SERVICE_TIMEOUT_MS=15000 +SIGNING_SERVICE_MAX_RETRIES=2 + +COMPANY_CERTIFICATES_PATH=/shared/certificates/company-certificates.json + +# SYNC +ENV = development +LOCAL_TZ = Europe/Madrid +STATE_PATH = /app/state +SYNC_MODE = all + +FACTUGES_HOST = factuges-pc.rodax-software.local +FACTUGES_PORT = 3050 +FACTUGES_DATABASE = C:\FactuGES\FACTUGES.FDB +FACTUGES_USER = sysdba +FACTUGES_PASSWORD = masterkey + +FWEB_MYSQL_HOST = db # ${DB_NAME} +FWEB_MYSQL_PORT = 3306 # ${DB_PORT} +FWEB_MYSQL_DATABASE = factuges_acana # ${DB_NAME} +FWEB_MYSQL_USER = acana # ${DB_USER} +FWEB_MYSQL_PASSWORD = r@U8%GJ+2e/AWR # ${DB_PASS} + +FWEB_API_URL = http://api:3002/api/v1/factuges +FWEB_API_KEY = "XXXXX" +FWEB_API_TIMEOUT = 120 + + +CTE_COMPANY_ID = '5e4dc5b3-96b9-4968-9490-14bd032fec5f' +CTE_SERIE = 'F26' +CTE_STATUS_INVOICE = 'issued' +CTE_IS_PROFORMA = 0 +CTE_STATUS_VERIFACTU = 'Pendiente' +CTE_LANGUAGE_CODE = 'es' +CTE_COUNTRY_CODE = 'es' +CTE_IS_COMPANY = 1 +CTE_SYNC_RESULT_OK = 1 +CTE_SYNC_RESULT_FAIL = 2 + +#VERIFACTU_API_KEY = vf_test_C03HL2F0X5OXSDRunjNFoMxD4IrRfK3kCC8PfcvCENI= +VERIFACTU_API_KEY = vf_prod_yfjonNPv2E4Fij+5J0hct0zCgUeFYT2dZzb23UZlM+Q= +VERIFACTU_BASE_URL = https://api.verifacti.com/ +VERIFACTU_NIFS_API_KEY = vfn_osYpNdqSzAdTAHpazXG2anz4F3o0gfbSb5FFrCBZcno= diff --git a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator index 092eb78d..d66b67e4 100755 Binary files a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator and b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/linux/FastReportCliGenerator differ diff --git a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe index b2a8af29..24bfa7fa 100755 Binary files a/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe and b/tools/fastreportcli-net-core-skia/FastReportCliGenerator/publish/windows/FastReportCliGenerator.exe differ