Subida a producción
This commit is contained in:
parent
fd67ebe599
commit
e734cea4d8
@ -101,6 +101,7 @@ COPY --from=builder /repo/apps/server/.env.${COMPANY} ./apps/server/dist/.env
|
||||
COPY --from=builder /repo/apps/server/node_modules ./apps/server/node_modules
|
||||
COPY --from=builder /repo/apps/server/package.json ./apps/server/package.json
|
||||
|
||||
# Las plantillas estarán en un volumen apuntando a /repo/apps/server/templates
|
||||
#COPY --from=builder /repo/templates ./apps/server/dist/templates
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/factuges-server",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "tsup src/index.ts --config tsup.config.ts",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@erp/factuges-web",
|
||||
"private": true,
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --host --clearScreen false",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/auth",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/core",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -36,7 +36,8 @@ export abstract class TemplateResolver implements ITemplateResolver {
|
||||
}
|
||||
|
||||
// <root>/templates/<module>/<companySlug>/
|
||||
return this.resolveJoin(["templates", module, companySlug]);
|
||||
//return this.resolveJoin(["templates", module, companySlug]);
|
||||
return this.resolveJoin([module]);
|
||||
}
|
||||
|
||||
/** Resuelve una ruta de recurso relativa al directorio de plantilla */
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/customer-invoices",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -27,9 +27,16 @@ export class IssuedInvoiceReportPDFPresenter extends Presenter<
|
||||
|
||||
// Generar el PDF con Puppeteer
|
||||
const browser = await puppeteer.launch({
|
||||
//headless: "new",
|
||||
headless: true,
|
||||
args: [
|
||||
"--no-sandbox",
|
||||
"--disable-setuid-sandbox",
|
||||
"--disable-dev-shm-usage",
|
||||
"--disable-gpu",
|
||||
"--disable-extensions",
|
||||
"--font-render-hinting=medium",
|
||||
],
|
||||
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,
|
||||
args: ["--font-render-hinting=medium"],
|
||||
});
|
||||
|
||||
const page = await browser.newPage();
|
||||
|
||||
@ -27,9 +27,16 @@ export class ProformaReportPDFPresenter extends Presenter<
|
||||
|
||||
// Generar el PDF con Puppeteer
|
||||
const browser = await puppeteer.launch({
|
||||
//headless: "new",
|
||||
headless: true,
|
||||
args: [
|
||||
"--no-sandbox",
|
||||
"--disable-setuid-sandbox",
|
||||
"--disable-dev-shm-usage",
|
||||
"--disable-gpu",
|
||||
"--disable-extensions",
|
||||
"--font-render-hinting=medium",
|
||||
],
|
||||
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,
|
||||
args: ["--font-render-hinting=medium"],
|
||||
});
|
||||
|
||||
const page = await browser.newPage();
|
||||
|
||||
@ -303,49 +303,35 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Columna izquierda: notas y forma de pago -->
|
||||
<table>
|
||||
<tr class="resume-table">
|
||||
<!-- Columna izquierda: notas y forma de pago -->
|
||||
<td class="left-col" rowspan="10">
|
||||
<tr>
|
||||
<td class="info-box" style="text-align: right;">
|
||||
{{#if payment_method}}
|
||||
<p><strong>Forma de pago:</strong> {{payment_method}}</p>
|
||||
<p><strong>Forma de pago</strong><br/> {{payment_method}}</p>
|
||||
{{/if}}
|
||||
|
||||
{{#if notes}}
|
||||
<p style="margin-top:0.5rem;"><strong>Notas:</strong> {{notes}}</p>
|
||||
<p><strong>Notas</strong><br/> {{notes}}</p>
|
||||
{{/if}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr class="total-row">
|
||||
<td class="label"><strong>Total factura</strong></td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
|
||||
<footer id="footer" style="margin-top:1rem; border-top:1px solid #000000;">
|
||||
<aside style="margin-top: 1rem;">
|
||||
<tfoot>
|
||||
<p style="text-align: center;">Insc. en el Reg. Merc. de Madrid, Tomo 31.839, Libro 0, Folio 191, Sección 8, Hoja
|
||||
M-572991
|
||||
CIF: B86913910</p>
|
||||
<p style="text-align: left; font-size: 6pt;">Información en protección de datos:<br />De conformidad con lo
|
||||
dispuesto en el RGPD y LOPDGDD,
|
||||
informamos que los datos personales serán tratados por
|
||||
ALISO DESIGN S.L para cumplir con la obligación tributaria de emitir facturas. Podrá solicitar más
|
||||
información, y ejercer sus derechos escribiendo a info@acanainteriorismo.com o mediante correo postal a la
|
||||
dirección CALLE
|
||||
LA FUNDICION 27 POL. IND. SANTA ANA (28522) RIVAS-VACIAMADRID, MADRID. Para el ejercicio de sus derechos, en
|
||||
caso
|
||||
de que sea necesario, se le solicitará documento que acredite su identidad. Si siente vulnerados sus derechos
|
||||
puede presentar una reclamación ante la AEPD, en su web: www.aepd.es.</p>
|
||||
</tfoot>
|
||||
</aside>
|
||||
<footer id="footer">
|
||||
<tfoot >
|
||||
<div style="border-bottom: 1px solid #000;">
|
||||
<p>Acota Cocinas S.L. Insc. en el Reg. Merc. de Madrid, Tomo 44.740, Folio 72, Hoja M-787831 CIF: B44670040</p>
|
||||
</div>
|
||||
<div>
|
||||
<p style="text-align: left; font-size: 6pt;">Información en protección de datos<br />Conforme a lo establecido en el Reglamento (UE) 2016/679 (RGPD), así como lo dispuesto en la normativa nacional sobre esta materia, le informamos de lo siguiente: Los datos personales facilitados serán responsabilidad de la entidad ACOTA COCINAS, S.L., además, sus datos personales serán utilizados para las siguientes finalidades: - Realización de acciones y comunicaciones comerciales y de marketing para informar y fidelizar clientes, - Prestación propia de nuestros servicios derivados de la actividad y distribución o comercialización de nuestros productos. Gestión fiscal y contable con la finalidad de cumplir con obligaciones legales. Todo ello bajo la legitimación otorgada por Consentimiento y firma de la persona, Interés legítimo, Ejecución de un contrato. No se cederán datos a terceros salvo obligaciones legales. No obstante es posible que determinados encargados del tratamiento externos puedan acceder a sus datos para la necesaria prestación del servicio. En cuanto a sus derechos, podrá reclamar ante la Autoridad de Control Nacional y en todo momento acceder, rectificar y suprimir sus datos, limitarlos o incluso oponerse a su tratamiento, solicitar su portabilidad a otros responsables, enviándonos una comunicación dirigida a Calle VIA CARPETANA, 340, B, CP 28047 Madrid, o bien enviándonos un email a monica@alonsoysal.com. Por último, puede consultar la información adicional y detallada sobre nuestra política de Protección de datos, mediante comunicación dirigida a nuestra dirección postal.<br/>
|
||||
OBTENCIÓN DE CONSENTIMIENTOS: Le informamos que marcando “SI” en las siguientes casillas estará dándonos su consentimiento expreso para llevar a cabo las finalidades descritas a continuación. Este consentimiento podrá ser retirado en cualquier momento posterior comunicándolo por cualquier medio fehaciente: X SI NO</p>
|
||||
</div>
|
||||
</tfoot>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/customers",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@erp/doc-numbering",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-criteria",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-ddd",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-logger",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@repo/rdx-utils",
|
||||
"version": "0.0.15",
|
||||
"version": "0.0.17",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"sideEffects": false,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_VERSION="1.2.1"
|
||||
SCRIPT_VERSION="1.2.4"
|
||||
|
||||
# =====================================================
|
||||
# FACTUGES Build Script
|
||||
@ -173,12 +173,15 @@ fi
|
||||
# =====================================================
|
||||
if [[ "$MODE" == "api" || "$MODE" == "all" ]]; then
|
||||
# Recopilar plantillas
|
||||
${SCRIPT_DIR}/build-templates.sh
|
||||
${SCRIPT_DIR}/build-templates.sh ${COMPANY}
|
||||
TEMPLATES_DIR="${PROJECT_DIR}/out/${COMPANY}/templates"
|
||||
|
||||
cd "${PROJECT_DIR}"
|
||||
echo "🐳 Construyendo imagen Docker..."
|
||||
|
||||
docker build --no-cache --debug -t "${IMAGE_TAG_V}" -t "${IMAGE_TAG_LATEST}" \
|
||||
#docker build --no-cache --debug -t "${IMAGE_TAG_V}" -t "${IMAGE_TAG_LATEST}" \
|
||||
docker build \
|
||||
-t "${IMAGE_TAG_V}" -t "${IMAGE_TAG_LATEST}" \
|
||||
--build-arg PORT="${PORT}" --build-arg COMPANY="${COMPANY}" \
|
||||
-f "${PROJECT_DIR}/Dockerfile" "${PROJECT_DIR}"
|
||||
|
||||
@ -209,8 +212,8 @@ if [[ "$MODE" == "api" || "$MODE" == "all" ]]; then
|
||||
},
|
||||
"port": "${PORT}",
|
||||
"files": {
|
||||
"versioned": "${TAR_FILE_V}",
|
||||
"latest": "${TAR_FILE_LATEST}"
|
||||
"versioned": "$(basename ${TAR_FILE_V})",
|
||||
"latest": "$(basename ${TAR_FILE_LATEST})"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
@ -222,8 +225,9 @@ if [[ "$LOAD" == true ]]; then
|
||||
echo "📥 Cargando imagen en producción vps-2.rodax-software.com..."
|
||||
[[ "$MODE" == "web" || "$MODE" == "all" ]] && scp -r -P 49152 ${OUT_WEB_DIR} rodax@vps-2.rodax-software.com:/opt/factuges/${COMPANY}/
|
||||
[[ "$MODE" == "api" || "$MODE" == "all" ]] && scp -r -P 49152 ${OUT_API_DIR} rodax@vps-2.rodax-software.com:/opt/factuges/${COMPANY}/
|
||||
[[ "$MODE" == "api" || "$MODE" == "all" ]] && scp -r -P 49152 ${TEMPLATES_DIR} rodax@vps-2.rodax-software.com:/opt/factuges/${COMPANY}/
|
||||
|
||||
[[ "$MODE" == "api" || "$MODE" == "all" ]] && RESULT=$(ssh -p 49152 rodax@vps-2.rodax-software.com "docker load -i ${TAR_FILE_LATEST}")
|
||||
[[ "$MODE" == "api" || "$MODE" == "all" ]] && RESULT=$(ssh -p 49152 rodax@vps-2.rodax-software.com "docker load -i /opt/factuges/${COMPANY}/api/$(basename ${TAR_FILE_LATEST})")
|
||||
[[ "$MODE" == "api" || "$MODE" == "all" ]] && echo $RESULT
|
||||
#docker load -i "${TAR_FILE_V}"
|
||||
echo "✅ Imagen cargada en producción"
|
||||
|
||||
@ -1,33 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "-------------------------------------------------------"
|
||||
echo "[build-templates] Recopilando plantillas del proyecto..."
|
||||
SCRIPT_VERSION="0.0.1"
|
||||
|
||||
# =====================================================
|
||||
# TEMPLATES Build Script
|
||||
# -----------------------------------------------------
|
||||
# Recopilas plantillas de los módulos (por compañía)
|
||||
# =====================================================
|
||||
# Uso:
|
||||
# ./build_templates.sh <company> [--api|web|all] [--load]
|
||||
#
|
||||
# Funcionalidades:
|
||||
# -
|
||||
# -
|
||||
# -
|
||||
# -
|
||||
# =====================================================
|
||||
|
||||
# --- Configuración base ---
|
||||
COMPANY=""
|
||||
|
||||
# --- Validar que el primer argumento existe y no es un flag ---
|
||||
if [[ $# -eq 0 || "$1" == --* ]]; then
|
||||
echo "❌ ERROR: Falta el parámetro <company>"
|
||||
echo "Uso: ./build_templates.sh <company>"
|
||||
echo "Ejemplos:"
|
||||
echo " ./build_templates.sh acme"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COMPANY="$1"
|
||||
|
||||
# Root directory (dir where the script lives, then go up)
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
SOURCE_DIR="$ROOT_DIR/modules"
|
||||
TARGET_DIR="$ROOT_DIR/apps/server/dist/templates"
|
||||
TARGET_DIR="$ROOT_DIR/out/$COMPANY/templates"
|
||||
|
||||
echo "[build-templates] Root: $ROOT_DIR"
|
||||
echo "[build-templates] Source: $SOURCE_DIR"
|
||||
echo "[build-templates] Target: $TARGET_DIR"
|
||||
echo ""
|
||||
echo "-------------------------------------------------------"
|
||||
echo " Templates Build Script v${SCRIPT_VERSION}"
|
||||
echo " Recopilando plantillas para compañía '${COMPANY}'"
|
||||
echo " Source: ${SOURCE_DIR}"
|
||||
echo " Target: ${TARGET_DIR}"
|
||||
echo "-------------------------------------------------------"
|
||||
|
||||
# Ensure target directory exists and is empty
|
||||
rm -rf "$TARGET_DIR"
|
||||
mkdir -p "$TARGET_DIR"
|
||||
rm -rf "${TARGET_DIR:?}/"*
|
||||
|
||||
# Loop through each package
|
||||
for module in "$SOURCE_DIR"/*; do
|
||||
if [ -d "$module/templates" ]; then
|
||||
if [ -d "$module/templates/$COMPANY" ]; then
|
||||
module_name=$(basename "$module")
|
||||
echo "→ Copying templates for module: $module_name"
|
||||
|
||||
mkdir -p "$TARGET_DIR/$module_name"
|
||||
cp -R "$module/templates/." "$TARGET_DIR/$module_name/"
|
||||
cp -Rv "$module/templates/$COMPANY/." "$TARGET_DIR/$module_name/"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✅ [build-templates] Terminado."
|
||||
echo "-------------------------------------------------------"
|
||||
echo "🧩 Script version: ${SCRIPT_VERSION} - FIN"
|
||||
echo "-------------------------------------------------------"
|
||||
echo ""
|
||||
echo ""
|
||||
echo ""
|
||||
@ -77,6 +77,9 @@ services:
|
||||
DB_USER: ${DB_USER}
|
||||
DB_PASS: ${DB_PASS}
|
||||
FRONTEND_URL: ${FRONTEND_URL}
|
||||
TEMPLATES_PATH: ${TEMPLATES_PATH}
|
||||
volumes:
|
||||
- ./templates:/repo/apps/server/templates:ro
|
||||
networks:
|
||||
- internal
|
||||
- edge
|
||||
|
||||
@ -14,6 +14,7 @@ DB_PORT=3306
|
||||
# API
|
||||
API_PORT=3002
|
||||
API_IMAGE=factuges-server:acana-latest
|
||||
TEMPLATES_PATH=/repo/apps/server/templates
|
||||
FRONTEND_URL=https://acana.factuges.app
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user