Code Duplication    Length = 22-22 lines in 2 locations

src/PhpSpreadsheet/Calculation/Financial.php 2 locations

@@ 650-671 (lines=22) @@
647
     * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
648
     *                        depending on the value of the ReturnDateType flag
649
     */
650
    public static function COUPNCD($settlement, $maturity, $frequency, $basis = 0)
651
    {
652
        $settlement = Functions::flattenSingleValue($settlement);
653
        $maturity = Functions::flattenSingleValue($maturity);
654
        $frequency = (int) Functions::flattenSingleValue($frequency);
655
        $basis = ($basis === null) ? 0 : (int) Functions::flattenSingleValue($basis);
656
657
        if (is_string($settlement = DateTime::getDateValue($settlement))) {
658
            return Functions::VALUE();
659
        }
660
        if (is_string($maturity = DateTime::getDateValue($maturity))) {
661
            return Functions::VALUE();
662
        }
663
664
        if (($settlement > $maturity) ||
665
            (!self::isValidFrequency($frequency)) ||
666
            (($basis < 0) || ($basis > 4))) {
667
            return Functions::NAN();
668
        }
669
670
        return self::couponFirstPeriodDate($settlement, $maturity, $frequency, true);
671
    }
672
673
    /**
674
     * COUPNUM.
@@ 788-809 (lines=22) @@
785
     * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
786
     *                        depending on the value of the ReturnDateType flag
787
     */
788
    public static function COUPPCD($settlement, $maturity, $frequency, $basis = 0)
789
    {
790
        $settlement = Functions::flattenSingleValue($settlement);
791
        $maturity = Functions::flattenSingleValue($maturity);
792
        $frequency = (int) Functions::flattenSingleValue($frequency);
793
        $basis = ($basis === null) ? 0 : (int) Functions::flattenSingleValue($basis);
794
795
        if (is_string($settlement = DateTime::getDateValue($settlement))) {
796
            return Functions::VALUE();
797
        }
798
        if (is_string($maturity = DateTime::getDateValue($maturity))) {
799
            return Functions::VALUE();
800
        }
801
802
        if (($settlement > $maturity) ||
803
            (!self::isValidFrequency($frequency)) ||
804
            (($basis < 0) || ($basis > 4))) {
805
            return Functions::NAN();
806
        }
807
808
        return self::couponFirstPeriodDate($settlement, $maturity, $frequency, false);
809
    }
810
811
    /**
812
     * CUMIPMT.