#[Pyth](https://pyth.readthedocs.io), <s>20</s> 19 bytes

My current prefix approach (will hopefully golf further), will add an explanation soon:

    +*tlQsQssM+_M.__Q._

**[Test Suite.](http://pyth.herokuapp.com/?code=%2B%2atlQsQssM%2B_M.__Q._&input=%22123%22&test_suite=1&test_suite_input=%2212%22%0A%22101%22%0A%22123%22%0A%221234567%22&debug=0)**

I am confident that `_M.__Q` is golfable, working on a solution.

------

#[Pyth](https://pyth.readthedocs.io), 20 bytes

    +*hlQsQsm+s>Qds<QdtU

**[Test Suite.](http://pyth.herokuapp.com/?code=%2B%2ahlQsQsm%2Bs%3EQds%3CQdtU&input=%22123%22&test_suite=1&test_suite_input=%221234567%22%0A%22123%22%0A%22101%22%0A%2212%22&debug=0)**

#Explanation

<s>Explanation to come after further golfing.</s> I didn't succeed to golf this further for now (I have ideas though).

    +*hlQsQsm+s>Qds<QdtUQ  - Full program. Reads from STDIN. Q means input, and is implicit at the end.

      hlQ                  - Length of the input + 1.
         sQ                - The input converted to an integer.
     *                     - Multiply the above. We'll call the result P.
            m         tUQ  - Map over [1...length of the input)
              s>Qd         - input[currentItem:] casted to an integer.
                  s<Qd     - input[:currentItem] casted to an integer.
             +             - Sum the above.
           s               - Sum the list.
    +                      - Add the sum of the list and P.