The basic syntax of your case function is correct. So if your results are not what you expect, you need to check two things:
The values and data types of your fields.
The context in which the function evaluates.
If payment type is not a text field or the text in payment type is not exactly "Advance on Signature", it can't return the value of date of contract. That's an example of checking values and data types.
but I also see that one expression refers to a table occurrence named "Contract" and another refers to a table occurrence named "book contract link". You may need to pay attention to the "context table (occurrence)" selected at the top of the specify calculation dialog and from there check the relationships linking the calculation field's table occurrence (as specified in the context drop down) to the other two occurrences used in the calculation.