Merge branch 'develop' of https://github.com/Kitzanos/GEPAFIN-BE into feature/GEPAFINBE-199
This commit is contained in:
@@ -22,7 +22,6 @@ appointment.portal.user=UtenzaAPIPortal@621
|
||||
appointment.portal.password=u13nzaAP1P0rtal!
|
||||
appointment.portal.source=GEPAFINPORTAL
|
||||
appointment.portal.context=GEPAFINPORTAL
|
||||
flagDaFirmare=false
|
||||
|
||||
# RabbitMQ properties for STOMP broker relay for Notification
|
||||
#spring.rabbitmq.host=rabbitmq.bflows.ai
|
||||
|
||||
@@ -20,7 +20,6 @@ appointment.portal.user=UtenzaAPIPortal@621
|
||||
appointment.portal.password=u13nzaAP1P0rtal!
|
||||
appointment.portal.source=GEPAFINPORTAL
|
||||
appointment.portal.context=GEPAFINPORTAL
|
||||
flagDaFirmare=false
|
||||
|
||||
# RabbitMQ properties for STOMP broker relay for Notification
|
||||
spring.rabbitmq.host=localhost
|
||||
|
||||
@@ -29,7 +29,6 @@ appointment.portal.user=UtenzaAPIPortal@621
|
||||
appointment.portal.password=u13nzaAP1P0rtal!
|
||||
appointment.portal.source=GEPAFINPORTAL
|
||||
appointment.portal.context=GEPAFINPORTAL
|
||||
flagDaFirmare=true
|
||||
|
||||
# RabbitMQ properties for STOMP broker relay for Notification
|
||||
#spring.rabbitmq.host=rabbitmq.bflows.ai
|
||||
|
||||
@@ -18,7 +18,6 @@ appointment.portal.user=UtenzaAPIPortal@621
|
||||
appointment.portal.password=u13nzaAP1P0rtal!
|
||||
appointment.portal.source=GEPAFINPORTAL
|
||||
appointment.portal.context=GEPAFINPORTAL
|
||||
flagDaFirmare=false
|
||||
|
||||
# RabbitMQ properties for STOMP broker relay for Notification
|
||||
spring.rabbitmq.host=rabbitmq.bflows.ai
|
||||
|
||||
@@ -47,7 +47,8 @@ fe.base.url=https://bandi-staging.memento.credit
|
||||
spring.main.allow-circular-references=true
|
||||
|
||||
isVatCheckGloballyDisabled = true
|
||||
vatCheckNewToken: 671916c76c6e822f660774d4
|
||||
vatCheckTokenV1: 66026bd891a51044e90e08c4
|
||||
vatCheckTokenV2: 671916c76c6e822f660774d4
|
||||
|
||||
#SPID configuration
|
||||
spid.ipd.base.url=https://federatest.umbriadigitale.it
|
||||
|
||||
@@ -2690,4 +2690,51 @@
|
||||
</insert>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="01-04-2025_PK_185849" author="Piyush Kag">
|
||||
<sqlFile dbms="postgresql"
|
||||
path="db/dump/create_application_amendment_request_view.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="03-04-2025_PK_152010" author="Piyush kag">
|
||||
<createTable tableName="global_config">
|
||||
<column name="id" type="INTEGER" autoIncrement="true">
|
||||
<constraints primaryKey="true" primaryKeyName="global_config_pkey" nullable="false"/>
|
||||
</column>
|
||||
<column name="content" type="TEXT"/>
|
||||
<column name="type" type="TEXT"/>
|
||||
<column name="is_deleted" type="BOOLEAN" defaultValueBoolean="false"/>
|
||||
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="03-04-2025_PK_154010" author="Piyush kag">
|
||||
<insert tableName="global_config">
|
||||
<column name="type" value="VAT_CHECK_API_VERSION"/>
|
||||
<column name="content" value="V2"/>
|
||||
<column name="created_date" value="2025-04-03 05:00:00"/>
|
||||
<column name="updated_date" value="2024-04-03 05:00:00"/>
|
||||
<column name="is_deleted" value="false"/>
|
||||
</insert>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="09-04-2025_NK_172550" author="Nisha Kashyap">
|
||||
<sqlFile
|
||||
dbms="postgresql"
|
||||
path="db/dump/create_application_form_view.sql"/>
|
||||
</changeSet>
|
||||
|
||||
|
||||
<changeSet id="08-04-2025_PK_160730" author="Piyush kag">
|
||||
<sqlFile dbms="postgresql"
|
||||
path="db/dump/create_assigned_application_view.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="14-04-2025_RK_161000" author="Rajesh Khore">
|
||||
<sqlFile dbms="postgresql"
|
||||
path="db/dump/update_form_field_data_14_04_2025.sql"/>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
CREATE OR REPLACE VIEW application_amendment_request_view AS
|
||||
|
||||
SELECT a.id,
|
||||
a.application_id,
|
||||
p.protocol_number,
|
||||
cl.name AS call_name,
|
||||
c.company_name,
|
||||
a.start_date,
|
||||
a.end_date AS expiration_date,
|
||||
COALESCE(NULLIF(TRIM(BOTH FROM concat(COALESCE(u.first_name, ''), ' ', COALESCE(u.last_name, ''))), ''), '') AS assigned_user_name,
|
||||
aa.user_id AS assigned_user_id,
|
||||
a.status,
|
||||
a.note,
|
||||
a.internal_note,
|
||||
app.user_id AS application_user_id,
|
||||
a.created_date,
|
||||
a.updated_date,
|
||||
a.is_deleted
|
||||
FROM gepafin_schema.application_amendment_request a
|
||||
LEFT JOIN gepafin_schema.application app ON a.application_id = app.id AND (app.is_deleted IS FALSE OR app.is_deleted IS NULL)
|
||||
LEFT JOIN gepafin_schema.call cl ON app.call_id = cl.id
|
||||
LEFT JOIN gepafin_schema.company c ON app.company_id = c.id
|
||||
LEFT JOIN gepafin_schema.protocol p ON a.protocol_id = p.id
|
||||
LEFT JOIN gepafin_schema.assigned_applications aa ON app.id = aa.application_id AND (aa.is_deleted IS FALSE OR aa.is_deleted IS NULL)
|
||||
LEFT JOIN gepafin_schema.gepafin_user u ON aa.user_id = u.id
|
||||
WHERE a.is_deleted IS FALSE OR a.is_deleted IS NULL ORDER BY id;
|
||||
125
src/main/resources/db/dump/create_application_form_view.sql
Normal file
125
src/main/resources/db/dump/create_application_form_view.sql
Normal file
@@ -0,0 +1,125 @@
|
||||
CREATE OR REPLACE VIEW gepafin_schema.application_form_view AS
|
||||
SELECT app_data.id,
|
||||
app_data.call_id,
|
||||
app_data.application_form_id,
|
||||
app_data.form_id,
|
||||
app_data.application_id,
|
||||
field_data.value ->> 'id' AS field_id,
|
||||
COALESCE(
|
||||
(SELECT s.value ->> 'value'
|
||||
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
|
||||
WHERE s.value ->> 'name' = 'label'
|
||||
LIMIT 1),
|
||||
field_data.value ->> 'label'
|
||||
) AS field_label,
|
||||
(
|
||||
SELECT (s.value ->> 'value')::boolean
|
||||
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
|
||||
WHERE s.value ->> 'name' = 'reportEnable'
|
||||
LIMIT 1
|
||||
) AS report_enable,
|
||||
COALESCE( (SELECT s.value ->> 'value'
|
||||
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
|
||||
WHERE s.value ->> 'name' = 'reportHeader'
|
||||
LIMIT 1),
|
||||
field_data.value ->> 'reportHeader'
|
||||
) AS report_header,
|
||||
field_data.value ->> 'name' AS field_type,
|
||||
CASE
|
||||
WHEN field_data.value ->> 'name' = 'fileupload' THEN
|
||||
to_jsonb((
|
||||
SELECT string_agg(d.file_name, ', ')
|
||||
FROM unnest(string_to_array(app_data.field_value, ',')) file_ids(file_id)
|
||||
JOIN gepafin_schema.document d ON d.id::text = file_ids.file_id
|
||||
WHERE d.is_deleted = false
|
||||
))
|
||||
WHEN field_data.value ->> 'name' IN ('checkboxes', 'select', 'radio') THEN
|
||||
CASE
|
||||
WHEN app_data.field_value ~~ '[%' THEN
|
||||
to_jsonb((
|
||||
SELECT string_agg(opt.value ->> 'label', ', ')
|
||||
FROM jsonb_array_elements_text(app_data.field_value::jsonb) selected_id(value)
|
||||
CROSS JOIN LATERAL (
|
||||
SELECT s.value
|
||||
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
|
||||
WHERE s.value ->> 'name' = 'options'
|
||||
) options_setting,
|
||||
LATERAL jsonb_array_elements(options_setting.value -> 'value') opt(value)
|
||||
WHERE opt.value ->> 'name' = selected_id.value
|
||||
))
|
||||
ELSE
|
||||
to_jsonb((
|
||||
SELECT opt.value ->> 'label'
|
||||
FROM (
|
||||
SELECT s.value
|
||||
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
|
||||
WHERE s.value ->> 'name' = 'options'
|
||||
) options_setting,
|
||||
LATERAL jsonb_array_elements(options_setting.value -> 'value') opt(value)
|
||||
WHERE opt.value ->> 'name' = app_data.field_value
|
||||
LIMIT 1
|
||||
))
|
||||
END
|
||||
ELSE
|
||||
to_jsonb(app_data.field_value)
|
||||
END AS field_value,
|
||||
app_data.status,
|
||||
app_data.amount_requested,
|
||||
app_data.amount_accepted,
|
||||
app_data.is_deleted,
|
||||
app_data.hub_id,
|
||||
app_data.user_id,
|
||||
app_data.evaluation_version,
|
||||
app_data.company_id,
|
||||
c.company_name,
|
||||
c.vat_number AS company_vat_number,
|
||||
c.codice_ateco,
|
||||
c.codice_fiscale AS company_codice_fiscale,
|
||||
p.protocol_number,
|
||||
b.codice_fiscale AS user_codice_fiscale,
|
||||
COALESCE(NULLIF(TRIM(BOTH FROM CONCAT(COALESCE(u.first_name, ''), ' ', COALESCE(u.last_name, ''))), ''), '') AS user_name,
|
||||
uwc.is_legal_representant AS legal_representative,
|
||||
cl.name AS call_title,
|
||||
cl.end_date AS call_end_date,
|
||||
cl.end_time AS call_end_time,
|
||||
cl.start_date AS call_start_date,
|
||||
cl.start_time AS call_start_time
|
||||
FROM (
|
||||
SELECT a.id AS application_id,
|
||||
a.call_id,
|
||||
a.protocol_number,
|
||||
af.id AS application_form_id,
|
||||
af.form_id AS form_id,
|
||||
aff.id AS id,
|
||||
aff.field_value,
|
||||
a.status,
|
||||
a.amount_requested,
|
||||
a.amount_accepted,
|
||||
a.is_deleted,
|
||||
a.hub_id,
|
||||
a.user_id,
|
||||
a.evaluation_version,
|
||||
a.created_date,
|
||||
a.company_id,
|
||||
aff.field_id,
|
||||
f.content
|
||||
FROM gepafin_schema.application a
|
||||
JOIN gepafin_schema.application_form af ON af.application_id = a.id
|
||||
JOIN gepafin_schema.application_form_field aff ON aff.application_form_id = af.id
|
||||
JOIN gepafin_schema.form f ON f.id = af.form_id
|
||||
WHERE a.is_deleted = false
|
||||
) app_data
|
||||
CROSS JOIN LATERAL (
|
||||
SELECT jsonb_array_elements.value
|
||||
FROM jsonb_array_elements(app_data.content::jsonb) jsonb_array_elements(value)
|
||||
WHERE jsonb_array_elements.value ->> 'id' = app_data.field_id::text
|
||||
) field_data(value)
|
||||
LEFT JOIN gepafin_schema.call cl ON app_data.call_id = cl.id
|
||||
LEFT JOIN gepafin_schema.company c ON app_data.company_id = c.id
|
||||
LEFT JOIN gepafin_schema.protocol p ON app_data.protocol_number = p.id
|
||||
LEFT JOIN gepafin_schema.gepafin_user u ON app_data.user_id = u.id
|
||||
LEFT JOIN gepafin_schema.user_with_company uwc ON app_data.user_id = uwc.user_id AND app_data.company_id = uwc.company_id AND uwc.is_deleted = false
|
||||
LEFT JOIN gepafin_schema.beneficiary b ON u.beneficiary_id = b.id
|
||||
WHERE app_data.id IS NOT NULL
|
||||
AND app_data.status NOT IN ('DRAFT', 'AWAITING', 'READY')
|
||||
ORDER BY app_data.id, field_data.value ->> 'id';
|
||||
@@ -0,0 +1,52 @@
|
||||
CREATE OR REPLACE VIEW assigned_applications_view AS
|
||||
SELECT
|
||||
-- From assigned_applications
|
||||
aa.id AS id,
|
||||
aa.user_id AS user_id,
|
||||
aa.status AS status,
|
||||
aa.created_date AS created_date,
|
||||
aa.updated_date AS updated_date,
|
||||
aa.is_deleted AS is_deleted,
|
||||
|
||||
-- From application
|
||||
a.id AS application_id,
|
||||
a.status AS application_status,
|
||||
a.submission_date AS submission_date,
|
||||
ae.end_date AS evaluation_end_date,
|
||||
a.ndg AS ndg,
|
||||
a.appointment_id AS appointment_id,
|
||||
|
||||
-- From protocol (OneToOne)
|
||||
p.protocol_number AS protocol_number,
|
||||
|
||||
-- From call (ManyToOne)
|
||||
cl.name AS call_name,
|
||||
|
||||
-- From company (ManyToOne)
|
||||
c.company_name AS company_name
|
||||
|
||||
FROM gepafin_schema.assigned_applications aa
|
||||
|
||||
-- Join application (ManyToOne from assigned_applications)
|
||||
LEFT JOIN gepafin_schema.application a
|
||||
ON aa.application_id = a.id
|
||||
AND (a.is_deleted IS FALSE OR a.is_deleted IS NULL)
|
||||
|
||||
-- Join application_evaluation (application_id matches + not deleted)
|
||||
LEFT JOIN gepafin_schema.application_evaluation ae
|
||||
ON ae.application_id = a.id
|
||||
AND (ae.is_deleted IS FALSE OR ae.is_deleted IS NULL)
|
||||
|
||||
-- Join protocol (OneToOne from application)
|
||||
LEFT JOIN gepafin_schema.protocol p
|
||||
ON a.protocol_number = p.id
|
||||
|
||||
-- Join call (ManyToOne from application)
|
||||
LEFT JOIN gepafin_schema.call cl
|
||||
ON a.call_id = cl.id
|
||||
|
||||
-- Join company (ManyToOne from application)
|
||||
LEFT JOIN gepafin_schema.company c
|
||||
ON a.company_id = c.id
|
||||
|
||||
WHERE aa.is_deleted IS FALSE OR aa.is_deleted IS NULL;
|
||||
@@ -0,0 +1,84 @@
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Testo Breve"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 1;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Testo Lungo"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 2;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Testo Formattato"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]',
|
||||
validators = '{"isRequired":false,"minLength":null,"maxLength":null,"custom":null}'
|
||||
WHERE id = 3;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Numero"},{"name":"placeholder","value":0},{"name":"step","value":0},{"name":"isRequestedAmount","value":false},{"name":"variable","value":[]},{"name":"formula","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 4;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Scelta Singola"},{"name":"options","value":[]},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 5;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Menu a Tendina"},{"name":"options","value":[]},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 6;
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Scelta Multipla"},{"name":"options","value":[]},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 7;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Casella di Spunta"},{"name":"isChecklistItem","value":false},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 8;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Data"},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]',
|
||||
validators = '{"isRequired":false,"custom":null}'
|
||||
WHERE id = 9;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Caricamento File"},{"name":"mime","value":[]},{"name":"isDelegation","value":false}]',
|
||||
validators = '{"isRequired":false,"maxSize":100000,"custom":null}'
|
||||
WHERE id = 10;
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Partita IVA"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 11;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Codice Fiscale"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 12;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"CAP"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 13;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"IBAN"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 14;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Campo Email"},{"name":"placeholder","value":"nome@esempio.it"},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 15;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Campo PEC"},{"name":"placeholder","value":"nome@pec.it"},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 16;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Indirizzo URL"},{"name":"placeholder","value":""},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 17;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Marca da bollo"},{"name":"placeholder","value":"Numero identificativo"},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 18;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Tabella"},{"name":"table_columns","value":{}},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]',
|
||||
validators = '{"custom":"nonEmptyTables"}'
|
||||
WHERE id = 20;
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Tabella"},{"name":"criteria_table_columns","value":{}},{"name":"variable","value":[]},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 21;
|
||||
|
||||
UPDATE FORM_FIELD
|
||||
SET settings = '[{"name":"label","value":"Casella di Spunta"},{"name":"isChecklistItem","value":true},{"name":"reportEnable","value":false},{"name":"reportHeader","value":""}]'
|
||||
WHERE id = 22;
|
||||
@@ -60,7 +60,8 @@ status.same.error=Status is already set.
|
||||
invalid.status.change.from.draft=Status cannot be changed to READY_TO_PUBLISH or PUBLISH from DRAFT.
|
||||
status.cannot.be.changed=Status cannot be changed.
|
||||
published.call.not.update=Published call cannot be updated.
|
||||
invalid.status.change.from.publish=Status cannot be changed to READY_TO_PUBLISH or DRAFT from PUBLISH.
|
||||
invalid.status.change.from.publish=Status cannot be changed to READY_TO_PUBLISH from PUBLISH.
|
||||
invalid.status.change.from.publish.to.draft=Status cannot be changed to DRAFT from PUBLISH as Applications are already created for this CALL.
|
||||
validation.table.message=Data for field {0} is not present.
|
||||
|
||||
|
||||
@@ -398,3 +399,4 @@ error.invalid.limit=Limit should be between 1 and 3000.
|
||||
insufficient.score.msg = Insufficient score to pass to the technical and economic-financial evaluation
|
||||
|
||||
password.expired.for.login.to.odessa = Odessa login password has been expired.
|
||||
invalid.user=Invalid user.
|
||||
|
||||
@@ -60,8 +60,8 @@ status.same.error=Lo stato ? gi? impostato.
|
||||
invalid.status.change.from.draft=Lo stato non pu? essere cambiato in READY_TO_PUBLISH o PUBLISH da DRAFT.
|
||||
status.cannot.be.changed=Lo stato non pu? essere cambiato.
|
||||
published.call.not.update=Il bando pubblicato non pu? essere aggiornato.
|
||||
invalid.status.change.from.publish=Lo stato non pu? essere modificato in READY_TO_PUBLISH o DRAFT da PUBLISH.
|
||||
|
||||
invalid.status.change.from.publish=Lo stato non pu? essere modificato in READY_TO_PUBLISH da PUBLISH.
|
||||
invalid.status.change.from.publish.to.draft=Lo stato non pu essere modificato da PUBLISH a DRAFT poich sono gi state create applicazioni per questa CALL.
|
||||
|
||||
# Login-related messages
|
||||
login.successfully=Accesso effettuato con successo.
|
||||
@@ -389,4 +389,5 @@ error.invalid.limit=Il limite dovrebbe essere compreso tra 1 e 3000.
|
||||
insufficient.score.msg = Punteggio non sufficiente per passaggio alla valutazione tecnica ed economico finanziaria
|
||||
validation.table.message=I dati per il campo {0} non sono presenti.
|
||||
|
||||
password.expired.for.login.to.odessa = La password di accesso a Odessa è scaduta
|
||||
password.expired.for.login.to.odessa = La password di accesso a Odessa è scaduta
|
||||
invalid.user=Utente non valido.
|
||||
Reference in New Issue
Block a user