|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Добрый день, добрые люди! Мне нужно решить следующую задачу: Ситуация . 1) на предприятии имеется ряд фондов, которые предназначены для финансирования отдельных хозяйственных процессов 2) иногда, по решению руководства, средства из какого-либо фонда берутся в заем для финансирования процессов другого фонда и впоследствии должны быть возвращены 3) на данный период имеется только учет займов, построен он таким образом: - в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Анализ Это только самый первичный учет, чтобы данные не пропали, но пользоваться ими не удобно. Задача - если нужно - реорганизовать данные - иметь возможность видеть "взаимные" обязательства фондов: - как минимум - в одной строке: из какого фонда в какой поступили средства - лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займ Мои вопросы 1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом? 2) возможно ли задачу минимум решать при существующей организации хранения данных? Благодарен за все ответы, комментарии и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 13:13 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Храните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Тогда и учет, и выборки упростятся... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 15:18 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintесли нужно - реорганизовать данныеlabirintкак минимум - в одной строке: из какого фонда в какой поступили средстваСлово "проводка" о чём-нибудь говорит? :) labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте? labirint1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?Да. labirint2) возможно ли задачу минимум решать при существующей организации хранения данных?Минимум - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 15:18 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirint... в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Должны быть не записи, а поля. Хотя информации недостаточно. P.S. Это что, очередной курсач? И время как-то неудобно выбрано... суббота как-никак ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2013, 15:24 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Тогда и учет, и выборки упростятся... Я уже об этом думал, но "одна голова - хорошо...", а лучше - посоветоваться, а в данном случае одной моей - недостаточно :( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:39 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirlabirintесли нужно - реорганизовать данныеlabirintкак минимум - в одной строке: из какого фонда в какой поступили средстваСлово "проводка" о чём-нибудь говорит? :) Немного, знаю, что это из бухгалтерии, но как осуществить - еще нет. labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте? В точности - как Вы написали. labirint1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?Да. labirint2) возможно ли задачу минимум решать при существующей организации хранения данных?Минимум - да. Но, похоже, лучше сначала реорганизовать структуру данных и решить всю задачу оптимально? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:47 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Jonny540labirint... в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Должны быть не записи, а поля. Хотя информации недостаточно. P.S. Это что, очередной курсач? И время как-то неудобно выбрано... суббота как-никак Не курсач. Задача реальная. Стандартный бух-софт здесь не использовался изначально и пользуются этой информацией не бух-ры. Возможно поэтому "неадекват". А суббота у меня получилась рабочая и уже не первая. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:49 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
... не получилось правильно учесть цитаты и редактировать, поэтому переписываю... tanglirСлово "проводка" о чём-нибудь говорит? :) Немного. Знаю, что это из бухгалтерии, но как осуществить - еще нет. tanglirНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте? В точности - как Вы написали. tanglirМинимум - да. Но, похоже, лучше сначала реорганизовать структуру данных и решить всю задачу оптимально? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 10:54 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintНе курсач. Задача реальная. Стандартный бух-софт здесь не использовался изначально и пользуются этой информацией не бух-ры. Возможно поэтому "неадекват". А суббота у меня получилась рабочая и уже не первая.Да, не посмотрел профиль, сорри... Не только у тебя сб-вс рабочими бывают. :) Насчет реорганизации данных: имно, фондов не очень много бывает - 5-10. Вполне всю инфу по движению денег можно хранить в одной строке. Различать строки по дате, заодно потом можно "историю" показать. А насчет отображения - представляется что-то типа "таблицы чемпионата по футболу", где в пересечениях стоит сумма (+S или -S или 0). На экран в 17" вполне влезет. Ну и общие итоги, etc. Но это так, первое приближение, то, что первое приснилось... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 11:08 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirinttanglirСлово "проводка" о чём-нибудь говорит? :) Немного. Знаю, что это из бухгалтерии, но как осуществить - еще нет. Погугли бухучет счета и двойная запись ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 11:19 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Ну-у-уу, наро-о-од... Движемся в нужном направлении, всё же... AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма tanglirСлово "проводка" о чём-нибудь говорит? :)Что ещё-то надо для учёта? Рассказать ТСу, как завести таблицу со списком фондов? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 13:07 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Jonny540Да, не посмотрел профиль, сорри... Не только у тебя сб-вс рабочими бывают. :) Насчет реорганизации данных: имно, фондов не очень много бывает - 5-10. Вполне всю инфу по движению денег можно хранить в одной строке. Ну, как написали выше - поля: дата, счет-дебет, счет-кредит, сумма, да? Фондов действительно не много. И записей пока не очень много. Пожалуй сделаю небольшой "парсер", и перегоню данные в новую таблицу с такой структурой. А дальше будем сохранять одновременно - как было и в новую таблицу, чтобы не переделывать то, что уже работает в других "модулях". Jonny540Различать строки по дате, заодно потом можно "историю" показать. А насчет отображения - представляется что-то типа "таблицы чемпионата по футболу", где в пересечениях стоит сумма (+S или -S или 0). На экран в 17" вполне влезет. Ну и общие итоги, etc. Но это так, первое приближение, то, что первое приснилось... :) Это надо согласовать с пользователем. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 23:05 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMНу-у-уу, наро-о-од... Движемся в нужном направлении, всё же... AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Что ещё-то надо для учёта? Рассказать ТСу, как завести таблицу со списком фондов? Таблица со списком есть :) Я как перенесу эти операции в таблицу с предложенной структурой, выйду дальше на обсуждение - как же выбирать данные в требуемом виде? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 23:08 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
создал новую таблицу и задумался.......... В исходной таблице используем поля: fmdate - дата, fundid - фонд ИД, fmsum - сумма, oper_code - код операции в которых: в 2-х строках одинаковая дата сумма: с минусом в фонде, откуда взято и с плюсом (т.е. без знака) - куда внесено коды фондов коды операции соответствующие: займ отсюда - 3 займ сюда - 4 возврат отсюда - 6 возврат сюда - 7 Структура новой таблицы (как рекомендовали): lod - дата операции fromfund - из фонда (соответствует кодам 3 и 6) tofund - в фонд (операции 4 и 7) losum - сумма Правильно ли сделал? Возможно ли одним запросом это все скопировать в новую таблицу? Или придется писать что-то со сканом или do while? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2013, 23:31 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMЧто ещё-то надо для учёта?Да всё уже есть, осталось только решить вот эту задачку: labirinttanglirНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте?В точности - как Вы написали. labirintВозможно ли одним запросом это все скопировать в новую таблицу?Если на каждую дату у каждого фонда может быть не более одной операции (каждого типа, т.е. максимум 4 разных в один день), то да. Правда, он медленный будет, но всё равно это разовый запрос. Прочитал внимательно, увидел поле "код операции". Тогда ответ - можно. labirintСтруктура новой таблицы (как рекомендовали): lod - дата операции fromfund - из фонда (соответствует кодам 3 и 6) tofund - в фонд (операции 4 и 7) losum - сумма Правильно ли сделал?Код операции забыли :) И если собираетесь различать займы и возвраты, то надо ещё поле добавить, с типом операции. Если оно вообще надо, конечно, ведь по сути у вас займ и возврат - одно и то же, это же не выдача кредитов какая-нибудь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 05:24 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirlabirintВозможно ли одним запросом это все скопировать в новую таблицу? Прочитал внимательно, увидел поле "код операции". Тогда ответ - можно. Уже легче. Подкиньте идею, плииз - как примерно оно может быть? tanglirlabirintСтруктура новой таблицы (как рекомендовали): lod - дата операции fromfund - из фонда (соответствует кодам 3 и 6) tofund - в фонд (операции 4 и 7) losum - сумма Правильно ли сделал?Код операции забыли :) И если собираетесь различать займы и возвраты, то надо ещё поле добавить, с типом операции. Если оно вообще надо, конечно, ведь по сути у вас займ и возврат - одно и то же, это же не выдача кредитов какая-нибудь :) В новой таблице код как-то не прижился - есть ведь "откуда" и "куда", соответственно понятно - где "минус". Хотя, похоже "займ/возврат" не помешают. Спрошу пользователя - надо ли ему видеть: займ это или возврат? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 12:35 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Так, стоп. Прочитал ещё внимательней . oper_code - это 3/4/5/6, т.е. код типа операции (займ, возврат), а не уникальный код самой операции? Тогда снова встаёт вопрос - на каждую дату у каждого фонда может быть более одной операции (каждого типа, т.е. максимум 4 разных в один день) или нет? Если не может, то вот набросок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 13:25 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirна каждую дату у каждого фонда может быть более одной операции ... ты в join фонд забыл включить :) и скобки в and ... or лучше по дате-сумме, если все в один день происходит и сумма только знаком отличается. Код: sql 1.
единственное проверить что в один день по каждому фонду одна сумма проходит один раз с плюсом и один с минусом. Этот запрос покажет "нездоровые" комбинации : Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 13:41 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima Tты в join фонд забыл включить :) Упс, это я его зря включил исправляюсь Код: sql 1.
проверочный Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 13:46 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirТак, стоп. Прочитал ещё внимательней . oper_code - это 3/4/5/6, т.е. код типа операции (займ, возврат), а не уникальный код самой операции? Тогда снова встаёт вопрос - на каждую дату у каждого фонда может быть более одной операции (каждого типа, т.е. максимум 4 разных в один день) или нет? Если не может, то вот набросок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Просто хочется сказать ВАУ! Спасибо! oper_code - это код типа операции. Уникальные коды тоже есть, но они идут в общем потоке приходов/расходов фонда и как мне кажется в данном случае не помогут. У любого фонда количество таких операций в сутки не ограничено программно. Также нет ограничений организационных, т.о. попадаются операции займа и погашения в один и тот же день и любые другие. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:39 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima Tи скобки в and ... or ............ единственное проверить что в один день по каждому фонду одна сумма проходит один раз с плюсом и один с минусом. Одна сумма проходит по одному фонду с минусом, а по другому с плюсом, а не 2 записи по одному фонду с "+" и "-". Но Одна и та же сумма может, в принципе, пройти за день дважды из одного фонда в другой - т.е. 2 займа за день на одинаковую сумму. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:50 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintУ любого фонда количество таких операций в сутки не ограничено программноТогда благодарить ещё ой как рано. То есть постулировать уникальность (фонд-операция-дата) мы не можем. Ну а как насчёт (фонд-операция-дата-сумма)? Если оно уникально, то поможет такое (спасибо Dima T за напоминание о скобках): Код: sql 1. 2. 3. 4.
В общем, Вам необходимо как-то найти уникальный идентификатор операции, иначе что делать вот с таким, например (всё проходит одной датой):фондтип_операциисумма1выдача займа2001выдача займа2002получение займа2003получение займа200Какая из первых двух строк связана с третьей, а какая с четвёртой? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:57 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintНо Одна и та же сумма может, в принципе, пройти за день дважды из одного фонда в другой - т.е. 2 займа за день на одинаковую сумму.Тады ой. Ищите уник, иначе придётся делать сканами. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 15:58 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Сканами в принципе не сложно. Исхожу из того что выдача и получение происходит в один день, а также при выдаче из одного фонда вся сумма попадает в другой (а не частями в несколько). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2013, 16:47 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima TСканами в принципе не сложно. Исхожу из того что выдача и получение происходит в один день, а также при выдаче из одного фонда вся сумма попадает в другой (а не частями в несколько). Да, так. вижу, что 2-мя запросами и сканом можно перенести данные. Спасибо за код! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2013, 00:01 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintвижу, что 2-мя запросами и сканом можно перенести данные. Спасибо за код! Первая часть получилась - создать таблицу. Теперь со второй - поможете? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 00:58 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintТеперь со второй - поможете? :)"вторая часть" - это вот это? labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займТогда давайте на примере, вот таком хотя бы idfrom_fundto_fundamount1121002234032360423405312063180 покажите, какой результат хочется увидеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 06:39 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
tanglirlabirintТеперь со второй - поможете? :)"вторая часть" - это вот это? labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займТогда давайте на примере, вот таком хотя бы idfrom_fundto_fundamount1121002234032360423405312063180 покажите, какой результат хочется увидеть. А ка Вы сюда таблицу поместили? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 20:01 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirint, тег [ csv ] ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 20:30 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintА ка Вы сюда таблицу поместили? Нажми "цитировать" и посмотри исходник :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2013, 21:07 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirinttanglir"вторая часть" - это вот это? idfrom_fundto_fundamount11210022340 покажите, какой результат хочется увидеть. А ка Вы сюда таблицу поместили? Например, есть исходные операции: датаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132550005.01.20133550008.01.201328500 и т.д. результат (хочется видеть) ИЗфондаВ_фондсумма51100081500 т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2013, 00:39 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirint, М-да... Видите, насколько важна постановка задачи. При такой постановке однозначного решения нет. Представьте такую картину: ИзфондаВфондСумма121000135002320031200 Что получается: ФондСумма1-10002-20057008500 И кто кому сколько должен платить? Это я еще не слишком удачный пример привел ... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2013, 16:10 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintрезультат (хочется видеть) ИЗфондаВ_фондсумма51100081500 т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг.Хочется "видеть"? То есть это нужно только отобразить, для последующих расчетов именно такая форма - не особо принципиальна? Кому "хочется видеть"? - вам, бухгалтерии, начальству? Почему именно в таком конкретном виде? Ведь для таких отображений существует "шахматка", и "бухгалтер" об этом знает, привык видеть в таком разрезе; либо в виде оборотки между двумя конкретными фондами. А косолидация оборотов в "группе фондов" таит в себе маленькую, но очень скрытую угрозу - не по всем возможным оборотам возможна "полная консолидация-взаимозачёт", и вот изучение всех возможных движений и есть путь к решению задачи, а то можно заложить косяки уже при проектировании... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2013, 16:56 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintlabirintпропущено... А ка Вы сюда таблицу поместили? Например, есть исходные операции: датаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132550005.01.20133550008.01.201328500 и т.д. результат (хочется видеть) ИЗфондаВ_фондсумма51100081500 т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг. Если у тебя фонд 2 может занять в 1-м а вернуть в 5 и 8, то тут нельзя говорить кто кому должен. Можно только разделить кредиты и долги, т.е. ожидай такой результат ФондВыдалДолжен50100080500115000 этот результат можно присте к тому что ты ожидаешь т.к. один фонд выдавший, но если выдавших будет много и должников много, то твою табличку возвратов можно нарисовать кучей способов. Ели это принципиально, то надо фиксировать именно возвраты в исходный фонд , т.е. взаимозачеты датаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132150004.01.20131550005.01.20133150005.01.20131550008.01.20132150008.01.201318500 тогда можно получить то что ты хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2013, 18:26 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirint, Может, рассмотреть такой вариант? Исходные данные: ДатаИЗ_фондаВ_фондСумма12100013500257003140028500 Результат: ID_фондаF1F2F3F4F5F6F7F8Itog10-1000-10000000-110021000000-70000-500-200310000000001004000000000507000000007006000000000700000000080500000000500 Правда, вопросов все равно еще много остается... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2013, 19:37 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Jonny540labirint, М-да... Видите, насколько важна постановка задачи. При такой постановке однозначного решения нет. Представьте такую картину: ИзфондаВфондСумма121000135002320031200 Что получается: ФондСумма1-10002-20057008500 И кто кому сколько должен платить? Это я еще не слишком удачный пример привел ... Это состояние отдельных фондов по сумме приходов расходов в каждом, это уже есть. Мне нужно именно состояние взаимных обязательств, желательно, с исключением "промежуточных" сумм и фондов, т.е. тех, через которые, при погашении, средства пройдут транзитом. Поэтому в моем примере и объяснении я исключил из результата фонды 2 и 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2013, 21:37 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
AndreTMlabirintрезультат (хочется видеть) ИЗфондаВ_фондсумма51100081500 т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг. Хочется "видеть"? То есть это нужно только отобразить, для последующих расчетов именно такая форма - не особо принципиальна? Кому "хочется видеть"? - вам, бухгалтерии, начальству? Финдиректору. Он не бухгалтер, и бухгалтерия этим не занимается, фонды не проходят по бухсчетам. AndreTMПочему именно в таком конкретном виде? Ведь для таких отображений существует "шахматка", и "бухгалтер" об этом знает, привык видеть в таком разрезе; либо в виде оборотки между двумя конкретными фондами. А консолидация оборотов в "группе фондов" таит в себе маленькую, но очень скрытую угрозу - не по всем возможным оборотам возможна "полная консолидация-взаимозачёт", и вот изучение всех возможных движений и есть путь к решению задачи, а то можно заложить косяки уже при проектировании... Не хочется вникать в термины "консолидация", "оборотка" и др. (хотя может и зря), поскольку бухгалтеру это пока не поручают, а ФД не намерен пока изучать бухгалтерию... "не по всем возможным оборотам возможна "полная консолидация-взаимозачёт"" - что ПОЛНАЯ может не получиться, понимаю, надо сделать хотя бы частично. В конце-концов - не обязательно одним запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2013, 22:01 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
Dima Tlabirintпропущено... т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг. Если у тебя фонд 2 может занять в 1-м а вернуть в 5 и 8, то тут нельзя говорить кто кому должен. Можно только разделить кредиты и долги, т.е. ожидай такой результат ФондВыдалДолжен50100080500115000 этот результат можно пристегнуть к тому что ты ожидаешь т.к. один фонд выдавший, но если выдавших будет много и должников много, то твою табличку возвратов можно нарисовать кучей способов. Ели это принципиально, то надо фиксировать именно возвраты в исходный фонд , т.е. взаимозачеты Возвраты, когда они делаются - конечно фиксируются. Задача увидеть дисбаланс, если так можно сказать, крайних значений, чтобы при планировании возвратов понимать - откуда начинать погашение. Dima TдатаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132150004.01.20131550005.01.20133150005.01.20131550008.01.20132150008.01.201318500 тогда можно получить то что ты хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2013, 22:12 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirint, Я понимаю, что "не обязательно одним запросом". Вопрос теперь упирается не в реализацию, а в "принятые у вас принципы учёта взаимозачётов", т.е. в бизнес-логику. И тут никакие наши советы не помогут, надо, как я уже упоминал, разбираться с движениями средств и смотреть, что, где и как можно "сокращать". Вообще, вам бы сейчас надо не пытаться сделать махом "красивый отчётик", а расспросить знающих, как правильно такой отчётик составляться должен... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2013, 22:20 |
|
SQL запрос - делаю в Фоксе учет финансов
|
|||
---|---|---|---|
#18+
labirintВозвраты, когда они делаются - конечно фиксируются. Задача увидеть дисбаланс, если так можно сказать, крайних значений, чтобы при планировании возвратов понимать - откуда начинать погашение. Тут два варианта: 1. Как в твоем примере: получают из одного фонда (1->2), а возвращают в другие (2->5 и 2->8). С точки зрения сумм все нормально (фонд 2 ничего не должен), это нормально только если фонды все под одним управлением. Но тут невозможно утверждать что фонды 5 и 8 должны в 1. Поэтому надо конкретный алгоритм погашения долгов. Например возврат идет сначала в фонд с максимальной выданной суммой. Может какой-то другой алгоритм, например связанный с датами: кто раньше выдал тому вперед возвращать. Тут ты должен знать как правильно для твоей задачи. 2. Фонд А должен фонду Б пока явно не вернет. Тогда учет усложняется, как я показал возврат должен быть не как у тебя (2->5 и 2->8) а через фонд источник (2->1;1->5 и 2->1;1->8). Но тут можно четко видеть кто-кому сколько должен. Если у тебя задача позволяет, то удобнее делать по варианту 1. В интерфейсе как-то так реализовать: в фонде X появилась сумма N для возврата: получаешь список фондов для возврата отсортированных в порядке убывания порядка погашения и возвращаешь с учетом суммы долга. например список выдач Фонд Выдано15002300 решили погасить из 5 фонда 700 формируешь проводки датаИЗфондаВ_фондсумма22.04.20135150022.04.201352200 Думаю тебе надо условия задачи поподробнее выяснить: какие операции возможны и что определяет алгоритм их решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 06:54 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1583066]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 450ms |
0 / 0 |