v0.6.2
This commit is contained in:
parent
108bbea5fc
commit
e87e3ec609
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "WEB: Vite (Chrome)",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -5,9 +5,8 @@
|
||||
"noEmit": true,
|
||||
"allowImportingTsExtensions": true,
|
||||
"lib": ["ES2022"],
|
||||
"baseUrl": "./src",
|
||||
"paths": {
|
||||
"@/*": ["*"]
|
||||
"@/*": ["./src/*"]
|
||||
},
|
||||
"outDir": "./dist",
|
||||
"rootDir": "./src",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
"compilerOptions": {
|
||||
"resolveJsonModule": true,
|
||||
"esModuleInterop": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["./src/*"]
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/auth",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/core",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"paths": {
|
||||
"@erp/core/*": ["./src/*"]
|
||||
},
|
||||
"baseUrl": ".",
|
||||
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"useDefineForClassFields": true,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/customer-invoices",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -344,16 +344,16 @@ export class Proforma extends AggregateRoot<ProformaInternalProps> 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(
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"paths": {
|
||||
"@erp/customer-invoices/*": ["./src/*"]
|
||||
},
|
||||
"baseUrl": ".",
|
||||
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"useDefineForClassFields": true,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@erp/customers",
|
||||
"description": "Customers",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"paths": {
|
||||
"@erp/customers/*": ["./src/*"]
|
||||
},
|
||||
"baseUrl": ".",
|
||||
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"useDefineForClassFields": true,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/factuges",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -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<FactugesInternalDeps>("factuges");
|
||||
|
||||
// Recuperamos servicios externos que necesitemos
|
||||
const customerServices = getService<CustomerPublicServices>("customers:general");
|
||||
const customerServices = getService<ICustomerPublicServices>("customers:general");
|
||||
const proformaServices = getService<IProformaPublicServices>("customer-invoices:proformas");
|
||||
|
||||
const publicServices = {
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"paths": {
|
||||
"@erp/factuges/*": ["./src/*"]
|
||||
},
|
||||
"baseUrl": ".",
|
||||
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"useDefineForClassFields": true,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"paths": {
|
||||
"@erp/supplier-invoices/*": ["./src/*"]
|
||||
},
|
||||
"baseUrl": ".",
|
||||
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"useDefineForClassFields": true,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@erp/suppliers",
|
||||
"description": "Suppliers",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"paths": {
|
||||
"@erp/suppliers/*": ["./src/*"]
|
||||
},
|
||||
"baseUrl": ".",
|
||||
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"useDefineForClassFields": true,
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
{
|
||||
"name": "uecko-erp-2025",
|
||||
"private": true,
|
||||
"version": "0.6.2",
|
||||
"workspaces": [
|
||||
"apps/*",
|
||||
"modules/*",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-criteria",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-ddd",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-logger",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
{
|
||||
"extends": "@repo/typescript-config/react-library.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@repo/rdx-ui/*": ["./src/*"]
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-utils",
|
||||
"version": "0.6.1",
|
||||
"version": "0.6.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Root",
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@erp/core/*": [
|
||||
"modules/core/src/*"
|
||||
|
||||
270
scripts/docker-compose.rodax.yml
Normal file
270
scripts/docker-compose.rodax.yml
Normal file
@ -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:
|
||||
@ -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
|
||||
91
scripts/stack.rodax.env
Normal file
91
scripts/stack.rodax.env
Normal file
@ -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=
|
||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user