cfp_payment_request.validation.inc

PHOTO EMBED

Wed Oct 12 2022 17:53:38 GMT+0000 (Coordinated Universal Time)

Saved by @igor #drupal #mysql

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