|
|
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Задача следующая в системе есть такое понятие как счет, который выставляют различным клиентам. И пользователям БД важно отслеживать какие счета были оплачены полностью, какие нет, а какие частично и если частично, то должна быть указана частичного платежа. Первое что приходит в голову, так это следующий вариант реализации: Таблица Account Код: plaintext 1. 2. 3. 4. 5. 6. 7. Насколько это рационально? Или лучше сделать отдельную таблицу счетов и отдельную таблицу частичных оплат, типа: Таблица AccountPartPay Код: plaintext 1. 2. 3. 4. Последние два поля как бы предполагают, что по одному счету может быть несколько частичных оплат, хотя пока такого функционала никому не надо - отслеживать даты предоплат. Хотелось бы узнать: сталкивался ли кто-нибудь с подобными задачами и как решали? Может быть кинете пример из общепризнанной практики - буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 11:30 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
Показывайте % оплат. Делов то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 11:41 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
LSV, т.е.? Где показывать процент оплаты? В таблице Accounts вместо поля SumPart ввести поле ProcentPay, а про вторую таблицу вообще забыть? Я Вас правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 11:49 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
DSFCПоследние два поля как бы предполагают, что по одному счету может быть несколько частичных оплат А как ты собирался полностью оплатить счёт одной частичной оплатой? Не хочешь держать отдельный список оплат - добавь поле "сумма, проплаченная к текущему моменту". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 12:12 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
Плановые платежи (договора) + Фактические оплаты = в реальности всегда M:M. "Разноска" либо ручная либо автоматичски (запросами, процедурами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 13:11 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительПлановые платежи (договора) + Фактические оплаты = в реальности всегда M:M. "Разноска" либо ручная либо автоматичски (запросами, процедурами). +1. Совершенно разные потоки информации. Если ты скажешь клиенту: "Вы оплатили счет только частично", он сразу спросит "как же так? я оплачивал в 10 порций, вот и номера квитанций... Вы, наверное, какой-то платеж потеряли, давайте сверимся... и т.д." А ты в ответ что скажешь? "Вы нам еще должны, потому что у меня компьютерный телевизор так показывает". Так что документы платежей хранить отдельно. А статус счета - по вкусу, для удобства. Теоретически, можно всегда вообще на лету вычислять, если не лень. Или поле статуса ввести: 0 - Не было оплаты, 1 - была частичная, 2 - оплачено полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 13:50 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherПрограммист-ЛюбительПлановые платежи (договора) + Фактические оплаты = в реальности всегда M:M. "Разноска" либо ручная либо автоматичски (запросами, процедурами). +1. Совершенно разные потоки информации. Если ты скажешь клиенту: "Вы оплатили счет только частично", он сразу спросит "как же так? я оплачивал в 10 порций, вот и номера квитанций... Вы, наверное, какой-то платеж потеряли, давайте сверимся... и т.д." А ты в ответ что скажешь? "Вы нам еще должны, потому что у меня компьютерный телевизор так показывает". Так что документы платежей хранить отдельно. А статус счета - по вкусу, для удобства. Теоретически, можно всегда вообще на лету вычислять, если не лень. Или поле статуса ввести: 0 - Не было оплаты, 1 - была частичная, 2 - оплачено полностью. И наоборот - накопить счетов и сделать общий платеж. И включить в него "долг" по предыдущему неполностью оплаченному счету. И переплатить в конце года, чтобы полностью освоить бюджет под будущие поставки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 16:20 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
DSFC StatusPay - оплачен или неоплачен счет полностью SumPart - частично оплаченПлохое решение, денормализованное, т.е. у вас всегда есть риск десинхронизации. Перевешивает ли этот риск затрат на просчет "на лету", решать вам. Второй вариант честнее - вы храните в базе только факт - такого-то числа, такой-то платежкой, была оплачена такая-то сумма, а интерпретацией этого факта (расчета процента оплат, определение статуса клиента и т.п.) занимается приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 18:15 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Все-таки я тоже склоняюсь к тому, чтобы вести отдельную таблицу, когда оплаты были сделаны. А статус оплачен, неоплачен дело второе. Главное, чтобы всем можно было увидеть сколько платежек было сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2011, 18:57 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
если даты и части не важны, то 2 поля - сумма всего и сумма уже оплачено если нужны даты платежей и все суммы, то отдельная таблица - ид договора, ид платежа, дата, сумма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2011, 23:33 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
DSFC Все-таки я тоже склоняюсь к тому, чтобы вести отдельную таблицу, когда оплаты были сделаны. А статус оплачен, неоплачен дело второе. Главное, чтобы всем можно было увидеть сколько платежек было сделано. И это правильно. Вообще в реальной жизни клиент может и просто так денег перечислить, в счет будущих поставок. При Вашем первом варианте оплату вообще некуда ввести будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2011, 12:37 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
DSFCПервое что приходит в голову, так это следующий вариант реализации: Ну давайте подумаем. В первую очередь нам нужны две сущности: Счёт (с полем сумма счёта) и Платёжка (с полем сумма платежа). Это непосредственное отображение важных реальных объектов, поэтому они нужны в любом случае и неприкосновенны. Счёт может быть оплачен одной или несколькими платёжками, платёжка может оплачивать один или несколько счетов. Это правда жизни. Многие ко многим. Что самое скверное, бывает, что платёжка от контрагента А контрагенту Б оплачивает счёт, выставленный контрагентом В контрагенту Г. Это тоже правда жизни. Состояние счёта (оплачен/не оплачен/частично оплачен) определяется соотношением 0 <= оплаченная сумма <= сумма счёта. "Оплаченную сумму" довольно естественно хранить денормализованно, как ещё одно поле в сущности "счёт". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2011, 16:38 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
softwarerНу давайте подумаем. В первую очередь нам нужны две сущности: Счёт (с полем сумма счёта) и Платёжка (с полем сумма платежа). Это непосредственное отображение важных реальных объектов, поэтому они нужны в любом случае и неприкосновенны. Вообще-то лучше не отрываться от бухгалтерии. Должен быть счет контрагента (дебет,кредит) (можно реализовать для каждой счета-фактуры свой) Есть Счет-фактура - документ (данность - выставленный счет) Есть платежи (Платежки, приходные кассовые ордера и т.д.) Дальше реализовываете проводки и разнос сумм по счетам. softwarerСчёт может быть оплачен одной или несколькими платёжками, платёжка может оплачивать один или несколько счетов. Это правда жизни. Многие ко многим. Что самое скверное, бывает, что платёжка от контрагента А контрагенту Б оплачивает счёт, выставленный контрагентом В контрагенту Г. Это тоже правда жизни. Ага. Всякое бывает. В этом вся и прелесть :-) softwarerСостояние счёта (оплачен/не оплачен/частично оплачен) определяется соотношением 0 <= оплаченная сумма <= сумма счёта. "Оплаченную сумму" довольно естественно хранить денормализованно, как ещё одно поле в сущности "счёт". Оплаченная сумма определяется состоянием счета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 08:02 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
И еще момент. Сам скоро должен столкнуться с подобным заданием, вот пример реализации как я вижу себе его: Таблица account (счета) Код: plaintext 1. 2. 3. 4. 5. 6. Таблица payment (платежи) Код: plaintext 1. 2. 3. 4. 5. 6. И еще одна таблица, которая определяет какая оплата к какому счету относится и за какие заказы это оплата прошла. payment_document Код: plaintext 1. 2. 3. 4. Пример: организация оказала 5 услуг (order_id: 1, 2, 3, 4, 5) контрагенту в течении месяца, выставила счет (account_id=1), а он оплатил её частями (payment_id 1,2,3). все эти оплаты фиксируются в таблице payment и payment_document, причем в таблице payment_document будет в таблице несколько раз фиксироваться один и тот же номер счета (document_id) и номер заказа (order_id), но с различными номерами платежек (payment_id) Примерно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 10:29 |
|
||
|
Статус оплачен и частично оплачен. Как оформить?
|
|||
|---|---|---|---|
|
#18+
mad_nazgulВообще-то лучше не отрываться от бухгалтерии. Должен быть счет контрагента (дебет,кредит) Есть Счет-фактура - документ (данность - выставленный счет) Бухгалтерия - отдельный (и очень большой) вопрос. Я в данном случае говорю про документ. Отрываться может быть и не стоит, но в решении данной конкретной задачи бухгалтерия никак не участвует. Также напомню, что топикстартера интересовало не полностью расписанное решение, а принцип. mad_nazgulОплаченная сумма определяется состоянием счета Я, пожалуй, готов согласиться с меткостью данного афоризма, но не готов принимать его как руководство к проектированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 17:34 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37490297&tid=1541962]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 452ms |

| 0 / 0 |
