The fallback function is not triggered when sending eth from one contract to another



// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

contract storageContract {
    address public fallbackContract;

    constructor (address _fallbackContract) {
        fallbackContract = _fallbackContract;
    }

    function setFallback(address newContract) public {
        fallbackContract = newContract;
    }

    function call() external payable {
        (bool sent, ) = payable(fallbackContract).call{value: msg.value}("");
        require(sent, "Failed to call fallback");
    }

    function send() external payable {
        (bool sent) = payable(fallbackContract).send(msg.value);
        require(sent, "Failed to call fallback");
    }

    function transfer() external payable {
        payable(fallbackContract).transfer(msg.value);
    }

    function contractBalance() external view returns (uint256) {
        return (address(this).balance);
    }
}

contract Main {
    uint256 public number;

    fallback() external payable {
        callBack();
    }

    receive() external payable {
        callBack();
    }

    function callBack() internal {
        number++;
    }

    function contractBalance() external view returns (uint256) {
        return (address(this).balance);
    }
}

here is my code. I need experts tips.

According to the Solidity official document,

The fallback function is executed on a call to the contract if none of the other functions match the given function signature, or if no data was supplied at all and there is no receive Ether function. The fallback function always receives data, but in order to also receive Ether it must be marked payable

In your code, the receive function is always triggered before the fallback function. Also it appears that transfer function does not support sending ETH to smart contracts.