Skip to content

Instantly share code, notes, and snippets.

@evmorov
Created August 28, 2018 09:01
Show Gist options
  • Save evmorov/69bd6472657b8f89930ddf6f16f02cdf to your computer and use it in GitHub Desktop.
Save evmorov/69bd6472657b8f89930ddf6f16f02cdf to your computer and use it in GitHub Desktop.

Order имеет много Contracts

initial Contract имеет много prolongation Contracts

initial Contract может иметь много StayPeriods, но по хорошему должен иметь только один StayPeriod

после создания initial Contract и вселения в пансионат создаётся StayPeriod, который впоследствии связан с initial Contract лишь внешним ключом: StayPeriod имеет свой pansion_id и contract_id, а initial Contract имеет свои и они могут быть изменены независимо друг от друга

prolongation Contract не имеет StayPeriods (в просмотре контракта отображается StayPeriod от initial Contract)

prolongation Contracts должны быть связаны по датам: с 1 по 10, с 11 по 20. Не может быть пробелов в датах: с 1 по 10, с 12 по 20 - невозможно

если у initial Contract в StayPeriod имеется checkout_date (резидент выехал из пансионата), то prolongation Contract может быть создан, но заселение по нему нельзя произвести (создать StayPeriod): надо создавать новый initial Contract или убирать checkout_date

initial Contract и его prolongation Contracts имеют один ContractPeriod

ContractPeriod имеет ссылку на Resident, Pansion, initial Contract

ContractPeriod - это SQL View (данные в базе нельзя изменить, они генерируются автоматически с помощью встроенного sql запроса)

initial Contract не должен иметь значения в parent_contract_id и previous_contract_id (должно быть NULL)

первый prolongation Contract должен иметь initial Contract id в parent_contract_id и previous_contract_id, а последующие иметь initial Contract id в parent_contract_id и предыдущий prolongation Contract id в previous_contract_id

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment