sale_extra design makes mandatory the use of the same fields on sale.extra and sale.extra.line
Due to the fact that the same pattern is passed to both sale.extra and sale.extra.line in MatchMixin (http://hg.tryton.org/trytond/file/bfc6b4989490/trytond/model/match.py#l12) there is a getattr that will fail if both model do not define the same fields (there will be an AttributeError).
I wonder if defining a method 'get_pattern' taking a sale in sale.extra and a line in sale.extra.line would not be a good solution.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information