<?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); } } }