code: public function validate($sale, Constraint $constraint)
      {
          if (null === $sale) {
              return;
          }
  
          if (!$sale instanceof SaleInterface) {
              throw new UnexpectedTypeException($sale, SaleInterface::class);
          }
          if (!$constraint instanceof Sale) {
              throw new UnexpectedTypeException($constraint, Sale::class);
          }
  
          $this->validateIdentity($sale, $constraint);
          $this->validateDeliveryAddress($sale, $constraint);
          $this->validateShipmentMethodRequirements($sale, $constraint);
          $this->validatePaymentTermAndOutstandingLimit($sale, $constraint);
  
          if (0 < $sale->getDepositTotal() && $sale->getDepositTotal() >= $sale->getGrandTotal()) {
              $this->context
                  ->buildViolation($constraint->deposit_greater_than_grand_total)
                  ->atPath('depositTotal')
                  ->addViolation();
          }
      }
docs: {@inheritdoc}