* Performance was very poor due to several reasons:
* City name translatable.
* Lack on indexes when deleting obsolete records.
* Some prefetching.
* City was not being searched also by state, having the chance of returning
incorrect matches if same city name on different states.
* Previous code was removing all previous records of zip entries!
* Remove possible obsolete FK keys after migrating from v11.
Steps:
- Open company form
- Set 'city completion' field
Get 'The state of the partner My Company differs from that in location X'
Disabling _check_zip while writing 'zip' fields from company, as incompatible with the sequence of write operations.
Automatic test is added too.
This module has now been refactored to be more consistent with what base_address_city offers to the location management.
Added dependency to contacts so that I could change the menu location for cities / zip management.
Now, every res.city record has a relation One2many to res.city.zip (old res.better.zip). This way, every zip has a realted city too.
Zips can be searched through city code, zip or city name (same as before).
Modified tests and deleted not needed tests.
Added sql contraints so that zips and cities are unique within it's country / state / city.