Merge branch 'dev' into fix_getSuggestedTickets_byFixtures
gitea/salix/pipeline/pr-dev This commit looks good
Details
gitea/salix/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
dbd298b7d8
|
@ -8,6 +8,7 @@ def RUN_BUILD
|
|||
def BRANCH_ENV = [
|
||||
test: 'test',
|
||||
master: 'production',
|
||||
main: 'production',
|
||||
beta: 'production'
|
||||
]
|
||||
|
||||
|
@ -20,12 +21,14 @@ node {
|
|||
'dev',
|
||||
'test',
|
||||
'master',
|
||||
'main',
|
||||
'beta'
|
||||
].contains(env.BRANCH_NAME)
|
||||
|
||||
FROM_GIT = env.JOB_NAME.startsWith('gitea/')
|
||||
RUN_TESTS = !PROTECTED_BRANCH && FROM_GIT
|
||||
RUN_BUILD = PROTECTED_BRANCH && FROM_GIT
|
||||
IS_LATEST = ['master', 'main'].contains(env.BRANCH_NAME)
|
||||
|
||||
// https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
|
||||
echo "NODE_NAME: ${env.NODE_NAME}"
|
||||
|
@ -73,6 +76,7 @@ pipeline {
|
|||
def packageJson = readJSON file: 'package.json'
|
||||
def version = "${packageJson.version}-build${env.BUILD_ID}"
|
||||
writeFile(file: 'VERSION.txt', text: version)
|
||||
echo "VERSION.txt: ${version}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -105,93 +109,73 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
stage('Stack') {
|
||||
parallel {
|
||||
stage('Back') {
|
||||
stages {
|
||||
stage('Test') {
|
||||
when {
|
||||
expression { RUN_TESTS }
|
||||
}
|
||||
environment {
|
||||
NODE_ENV = ''
|
||||
}
|
||||
steps {
|
||||
sh 'node back/tests.js --junit'
|
||||
}
|
||||
post {
|
||||
always {
|
||||
junit(
|
||||
testResults: 'junitresults.xml',
|
||||
allowEmptyResults: true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build') {
|
||||
when {
|
||||
expression { RUN_BUILD }
|
||||
}
|
||||
environment {
|
||||
VERSION = readFile 'VERSION.txt'
|
||||
}
|
||||
steps {
|
||||
sh 'docker-compose build back'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Front') {
|
||||
when {
|
||||
expression { FROM_GIT }
|
||||
}
|
||||
stages {
|
||||
stage('Test') {
|
||||
when {
|
||||
expression { RUN_TESTS }
|
||||
}
|
||||
environment {
|
||||
NODE_ENV = ''
|
||||
}
|
||||
steps {
|
||||
sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10'
|
||||
}
|
||||
post {
|
||||
always {
|
||||
junit(
|
||||
testResults: 'junit.xml',
|
||||
allowEmptyResults: true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build') {
|
||||
when {
|
||||
expression { RUN_BUILD }
|
||||
}
|
||||
environment {
|
||||
VERSION = readFile 'VERSION.txt'
|
||||
}
|
||||
steps {
|
||||
sh 'gulp build'
|
||||
sh 'docker-compose build front'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Push') {
|
||||
stage('Build') {
|
||||
when {
|
||||
expression { RUN_BUILD }
|
||||
}
|
||||
environment {
|
||||
CREDENTIALS = credentials('docker-registry')
|
||||
VERSION = readFile 'VERSION.txt'
|
||||
CREDENTIALS = credentials('docker-registry')
|
||||
}
|
||||
steps {
|
||||
sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY'
|
||||
sh 'docker-compose push'
|
||||
parallel {
|
||||
stage('Back') {
|
||||
steps {
|
||||
dockerBuildPush 'salix-back', '.', 'back/Dockerfile'
|
||||
}
|
||||
}
|
||||
stage('Front') {
|
||||
steps {
|
||||
sh 'gulp build'
|
||||
dockerBuildPush 'salix-front', 'front'
|
||||
}
|
||||
}
|
||||
stage('DB') {
|
||||
steps {
|
||||
sh 'npx myt run -t'
|
||||
sh 'docker exec vn-database sh -c "cp -r /var/lib/mysql /data"'
|
||||
sh 'docker commit vn-database vn_db'
|
||||
sh 'docker stop vn-database'
|
||||
sh 'docker rm vn-database'
|
||||
|
||||
dockerBuildPush 'salix-db', 'db'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Test') {
|
||||
when {
|
||||
expression { RUN_TESTS }
|
||||
}
|
||||
environment {
|
||||
NODE_ENV = ''
|
||||
}
|
||||
parallel {
|
||||
stage('Back') {
|
||||
steps {
|
||||
sh 'node back/tests.js --junit'
|
||||
}
|
||||
post {
|
||||
always {
|
||||
junit(
|
||||
testResults: 'junitresults.xml',
|
||||
allowEmptyResults: true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Front') {
|
||||
steps {
|
||||
sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10'
|
||||
}
|
||||
post {
|
||||
always {
|
||||
junit(
|
||||
testResults: 'junit.xml',
|
||||
allowEmptyResults: true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Deploy') {
|
||||
|
@ -264,3 +248,16 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
def dockerBuildPush(imageName, context, dockerfile = null) {
|
||||
if (dockerfile == null)
|
||||
dockerfile = "${context}/Dockerfile"
|
||||
|
||||
docker.withRegistry("https://${env.REGISTRY}", 'docker-registry') {
|
||||
def baseImage = "${imageName}:${env.VERSION}"
|
||||
def image = docker.build(baseImage, "-f ${dockerfile} ${context}")
|
||||
image.push()
|
||||
image.push(env.BRANCH_NAME)
|
||||
if (IS_LATEST) image.push('latest')
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ RUN apt-get update \
|
|||
libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 \
|
||||
libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 \
|
||||
libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 \
|
||||
libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 \
|
||||
libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 build-essential \
|
||||
fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
|
||||
|
||||
# Extra dependencies
|
||||
|
@ -55,4 +55,4 @@ COPY \
|
|||
README.md \
|
||||
./
|
||||
|
||||
CMD ["node", "--tls-min-v1.0", "--openssl-legacy-provider", "./loopback/server/server.js"]
|
||||
CMD ["node", "--tls-min-v1.0", "--openssl-legacy-provider", "./loopback/server/server.js"]
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
FROM mariadb:10.11.6
|
||||
ENV TZ Europe/Madrid
|
||||
COPY --from=vn_db /data /var/lib/mysql
|
||||
CMD ["mysqld"]
|
|
@ -1609,7 +1609,7 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal
|
|||
(13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 4, util.VN_CURDATE()),
|
||||
(14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 4, util.VN_CURDATE()),
|
||||
(15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 4, util.VN_CURDATE()),
|
||||
(16, 99, 1, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, NULL, 1.00, '2024-07-30 08:13:51.000'),
|
||||
(16, 99, 1, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, NULL, 1.00, util.VN_CURDATE()),
|
||||
(17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH),
|
||||
(18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH),
|
||||
(19, 100, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE()),
|
||||
|
@ -2785,11 +2785,11 @@ INSERT INTO `vn`.`roadmapAddress` (`addressFk`)
|
|||
(3),
|
||||
(4);
|
||||
|
||||
INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `eta`, `observations`, `editorFk`, `price`, `driverName`)
|
||||
INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `observations`, `editorFk`, `price`, `driverName`)
|
||||
VALUES
|
||||
(1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), DATE_ADD(util.VN_NOW(), INTERVAL 2 DAY), 'this is test observation', 1, 15, 'Batman'),
|
||||
(2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), DATE_ADD(util.VN_NOW(), INTERVAL 5 DAY), 'test observation', 1, 20, 'Robin'),
|
||||
(3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), DATE_ADD(util.VN_NOW(), INTERVAL 6 DAY), 'observations...', 2, 25, 'Driverman');
|
||||
(1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), 'this is test observation', 1, 15, 'Batman'),
|
||||
(2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), 'test observation', 1, 20, 'Robin'),
|
||||
(3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), 'observations...', 2, 25, 'Driverman');
|
||||
|
||||
INSERT INTO `vn`.`roadmapStop` (`id`, `roadmapFk`, `roadmapAddressFk`, `eta`, `description`, `editorFk`)
|
||||
VALUES
|
||||
|
|
|
@ -207,7 +207,7 @@ BEGIN
|
|||
|
||||
SELECT t.originType,
|
||||
t.originId,
|
||||
@shipped:= t.shipped,
|
||||
@shipped:= t.shipped shipped,
|
||||
t.alertLevel,
|
||||
t.stateName,
|
||||
t.reference,
|
||||
|
|
|
@ -72,7 +72,7 @@ proc: BEGIN
|
|||
IF(tpr.isFreezed, ' CONGELADO',''),
|
||||
IF(tpr.hasHighRisk, ' RIESGO',''),
|
||||
IF(tpr.hasTicketRequest, ' COD 100',''),
|
||||
IF(tpr.isTaxDataChecked, '',' FICHA INCOMPLETA'),
|
||||
IF(tpr.isTaxDataChecked, ' FICHA INCOMPLETA', ''),
|
||||
IF(tpr.hasComponentLack, ' COMPONENTES', ''),
|
||||
IF(HOUR(util.VN_NOW()) < IF(HOUR(t.shipped), HOUR(t.shipped), COALESCE(HOUR(zc.hour),HOUR(z.hour)))
|
||||
AND tpr.isTooLittle, ' PEQUEÑO', '')
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeDelete`
|
||||
BEFORE DELETE ON `roadmapStop`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE vMaxEta DATETIME;
|
||||
DECLARE vRoadmapEta DATETIME;
|
||||
|
||||
IF OLD.roadmapFk IS NOT NULL THEN
|
||||
SELECT MAX(eta) INTO vMaxEta
|
||||
FROM roadmapStop
|
||||
WHERE roadmapFk = OLD.roadmapFk
|
||||
AND id <> OLD.id;
|
||||
|
||||
SELECT eta INTO vRoadmapEta
|
||||
FROM roadmap
|
||||
WHERE id = OLD.roadmapFk;
|
||||
|
||||
IF vMaxEta <> vRoadmapEta OR vMaxEta IS NULL THEN
|
||||
UPDATE roadmap
|
||||
SET eta = vMaxEta
|
||||
WHERE id = OLD.roadmapFk;
|
||||
END IF;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -3,8 +3,6 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeInser
|
|||
BEFORE INSERT ON `roadmapStop`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE vRoadmapEta DATETIME;
|
||||
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
IF NEW.description IS NOT NULL THEN
|
||||
|
@ -16,17 +14,5 @@ BEGIN
|
|||
CALL util.throw('Departure time can not be after arrival time');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF NEW.roadmapFk IS NOT NULL AND NEW.eta IS NOT NULL THEN
|
||||
SELECT eta INTO vRoadmapEta
|
||||
FROM roadmap
|
||||
WHERE id = NEW.roadmapFk;
|
||||
|
||||
IF vRoadmapEta < NEW.eta OR vRoadmapEta IS NULL THEN
|
||||
UPDATE roadmap
|
||||
SET eta = NEW.eta
|
||||
WHERE id = NEW.roadmapFk;
|
||||
END IF;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -3,40 +3,17 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeUpdat
|
|||
BEFORE UPDATE ON `roadmapStop`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE vMaxEta DATETIME;
|
||||
DECLARE vCurrentEta DATETIME;
|
||||
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
IF NOT (NEW.description <=> OLD.description) THEN
|
||||
SET NEW.description = UCASE(NEW.description);
|
||||
END IF;
|
||||
|
||||
IF (NOT (NEW.roadmapFk <=> OLD.roadmapFk) AND NEW.roadmapFk IS NOT NULL)
|
||||
OR (NOT (NEW.eta <=> OLD.eta)) THEN
|
||||
IF NOT (NEW.roadmapFk <=> OLD.roadmapFk) OR NOT (NEW.eta <=> OLD.eta) THEN
|
||||
|
||||
IF NEW.eta < (SELECT etd FROM roadmap WHERE id = NEW.roadmapFk) THEN
|
||||
CALL util.throw('Departure time can not be after arrival time');
|
||||
END IF;
|
||||
|
||||
SELECT MAX(eta) INTO vMaxEta
|
||||
FROM roadmapStop
|
||||
WHERE roadmapFk = NEW.roadmapFk
|
||||
AND id <> OLD.id;
|
||||
|
||||
IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN
|
||||
SET vMaxEta = NEW.eta;
|
||||
END IF;
|
||||
|
||||
SELECT eta INTO vCurrentEta
|
||||
FROM roadmap
|
||||
WHERE id = NEW.roadmapFk;
|
||||
|
||||
IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN
|
||||
UPDATE roadmap
|
||||
SET eta = vMaxEta
|
||||
WHERE id = NEW.roadmapFk;
|
||||
END IF;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
DELIMITER ;
|
|
@ -1,17 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate`
|
||||
AFTER UPDATE ON `roadmap`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE vSeconds INT;
|
||||
|
||||
IF NOT (NEW.etd <=> OLD.etd) THEN
|
||||
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
|
||||
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
|
||||
UPDATE roadmapStop
|
||||
SET eta = eta + INTERVAL vSeconds SECOND
|
||||
WHERE roadmapFk = NEW.id;
|
||||
END IF;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -3,6 +3,8 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_beforeUpdate`
|
|||
BEFORE UPDATE ON `roadmap`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE vSeconds INT;
|
||||
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
IF NOT (NEW.name <=> OLD.name) THEN
|
||||
|
@ -37,5 +39,15 @@ BEGIN
|
|||
FROM worker w
|
||||
WHERE w.id = NEW.driverChangeFk);
|
||||
END IF;
|
||||
|
||||
IF NOT (NEW.etd <=> OLD.etd) THEN
|
||||
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
|
||||
|
||||
IF vSeconds <> 0 THEN
|
||||
UPDATE roadmapStop
|
||||
SET eta = eta + INTERVAL vSeconds SECOND
|
||||
WHERE roadmapFk = NEW.id;
|
||||
END IF;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
|||
CREATE OR REPLACE DEFINER=`vn`@`localhost`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `vn`.`roadmapEta`
|
||||
AS SELECT `roadmapFk` AS id,
|
||||
MAX(`eta`) AS `eta`
|
||||
FROM `vn`.`roadmapStop`
|
||||
WHERE `roadmapFk` IS NOT NULL
|
||||
GROUP BY `roadmapFk`;
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.roadmap
|
||||
MODIFY COLUMN dollyPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL COMMENT
|
||||
'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción';
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
|
||||
|
||||
GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss;
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.vehicle
|
||||
MODIFY COLUMN typeFk enum('car','van','truck','trailer','tug','dolly','trailerLink')
|
||||
CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT 'van' NOT NULL;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE vn.roadmap DROP COLUMN eta;
|
|
@ -3,7 +3,6 @@ UPDATE vn.expedition e
|
|||
SELECT id
|
||||
FROM vn.expedition
|
||||
WHERE hostFk COLLATE utf8mb3_unicode_ci NOT IN
|
||||
(SELECT code COLLATE utf8mb3_unicode_ci FROM host WHERE code IS NOT NULL)
|
||||
) s
|
||||
ON e.id = s.id
|
||||
SET e.hostFk = 'pc336';
|
||||
(SELECT code COLLATE utf8mb3_unicode_ci FROM vn.host WHERE code IS NOT NULL)
|
||||
) s ON e.id = s.id
|
||||
SET e.hostFk = 'pc336';
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
version: '3.7'
|
||||
services:
|
||||
front:
|
||||
image: registry.verdnatura.es/salix-front:${VERSION:?}
|
||||
build:
|
||||
context: front
|
||||
back:
|
||||
image: registry.verdnatura.es/salix-back:${VERSION:?}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: back/Dockerfile
|
|
@ -45,7 +45,7 @@ module.exports = Self => {
|
|||
{
|
||||
relation: 'user',
|
||||
scope: {
|
||||
fields: ['id', 'name']
|
||||
fields: ['id', 'nickname']
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
"observations": {
|
||||
"type": "string"
|
||||
},
|
||||
"userFk": {
|
||||
"editorFk": {
|
||||
"type": "number"
|
||||
},
|
||||
"price": {
|
||||
|
|
|
@ -15,16 +15,13 @@
|
|||
"roadmapFk": {
|
||||
"type": "number"
|
||||
},
|
||||
"addressFk": {
|
||||
"type": "number"
|
||||
},
|
||||
"eta": {
|
||||
"type": "date"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"userFk": {
|
||||
"editorFk": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
|
@ -37,7 +34,7 @@
|
|||
"address": {
|
||||
"type": "belongsTo",
|
||||
"model": "RoadmapAddress",
|
||||
"foreignKey": "addressFk"
|
||||
"foreignKey": "roadmapAddressFk"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
subject: Votre facture
|
||||
title: Votre facture
|
||||
dear: Cher client,
|
||||
description: Le facture <strong>{0}</strong> correspondant à la commande <strong>{1}</strong> est maintenant disponible.<br/>
|
||||
Vous pouvez le télécharger en cliquant sur la pièce jointe dans cet email.
|
||||
poll: Si vous le souhaitez, vous pouvez répondre à notre questionaire de satisfaction
|
||||
pour nous aider à améliorer notre service. Votre avis est très important pour nous!
|
||||
help: N'hésitez pas nous envoyer toute doute ou question, <strong>nous sommes là pour vous aider!</strong>
|
||||
dear: Chère cliente, cher client
|
||||
description: La facture <strong>{0}</strong> correspondant à votre commande <strong>{1}</strong> est maintenant disponible.<br/>
|
||||
Vous pouvez la télécharger en cliquant sur la pièce jointe.
|
||||
poll: <strong></strong>
|
||||
help: En cas de besoin d'eclaircissement, n'hésitez pas à nous contacter, <strong>nous sommes là pour vous aider!</strong>
|
||||
conclusion: Merci pour votre attention!
|
||||
|
|
Loading…
Reference in New Issue