cfp_payment_request.validation.inc
Wed Oct 12 2022 17:53:38 GMT+0000 (Coordinated Universal Time)
<?php
/**
* Implements hook_entity_validation_ENTITY_TYPE_alter().
*/
function cfp_payment_request_entity_validation_cfp_payment_request_alter($entity_typed_data, $validation_context) {
$entity_typed_data->getDataDefinition()->addConstraint('GlobalPaymentRequestConstraint', []);
if ($validation_context === 'cfp_payment_request.pr_2022_01') {
$required_fields = [
'cf_promissory_notes',
'cf_no_debts_confirmation',
'cf_technical_report_start',
'cf_technical_report_end',
'cf_project_description',
'items',
];
/** @var Drupal\Core\Entity\EntityInterface $entity */
$entity = $entity_typed_data->getEntity();
if ($entity->get('pr_type')->value === 'closing') {
array_push($required_fields, 'cf_eur1_form', 'cf_customs_documents');
}
/** @var \Drupal\Core\Field\FieldDefinition[] $field_definitions */
$field_definitions = $entity->getFieldDefinitions();
foreach ($required_fields as $required_field) {
$field_definitions[$required_field]->setRequired(TRUE);
}
}
}
/**
* Implements hook_entity_validation_ENTITY_TYPE_rollback_alter().
*/
function cfp_payment_request_entity_validation_cfp_payment_request_item_rollback_alter($entity_typed_data, $validation_context, $rollback_info) {
if ($validation_context === 'cfp_payment_request.pr_2022_01') {
$required_fields = [
'cost_item_name',
'cf_manufacturer',
'cf_distributor',
'cf_unique_item_id',
'cf_distributor_bank_account_num',
'cf_distributor_vat_number',
'item_quantity',
];
$decimal_fields = [
'item_net_unit',
'item_unit_vat',
'item_pay_off',
'item_support',
];
/** @var \Drupal\cfp_payment_request\Entity\PaymentRequestItem $entity */
$entity = $entity_typed_data->getEntity();
$payment_request = $entity->getParent();
if ($payment_request->get('pr_type')->value === 'closing') {
array_push($required_fields,
'cf_final_account',
'cf_confirm_final_payment',
'cf_purchase_contract',
'cf_protocol_record',
'cf_driving_license',
'cf_pictures',
);
}
/** @var \Drupal\Core\Field\FieldDefinition[] $field_definitions */
$field_definitions = $entity->getFieldDefinitions();
foreach ($required_fields as $required_field) {
$field_definitions[$required_field]->setRequired(TRUE);
}
foreach ($decimal_fields as $decimal_field) {
if ($entity->get($decimal_field)->value === "0.00") {
$entity->set($decimal_field, NULL);
}
$field_definitions[$decimal_field]->setRequired(TRUE);
}
}
}



Comments